ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

c++/oop---STL find/ 函数对象 /关联容器/set和map

2022-04-09 19:34:14  阅读:144  来源: 互联网

标签:map set const val iterator STL pair find 函数


find

template <class InIt,class T>
InIt find (InIt first, InIt last ,const T& val)
   

在[first,last) 按顺序查找和val相等的元素,如果找到就返回迭代器,否则就返回end

STL中的大小比较通过 < 实现

最好将 < 重载为全局函数,否则可能会出错

 

如果一个类将 () 运算符重载为成员函数,则这个类就称为函数对象类,这个类的对象是函数对象

可以认为能够将这个类的对象当成一个函数来使用

()是目数不限的运算符,重载为成员函数的时候有多少参数都可以。

 

关联容器

关联容器内部的元素是排好序的,有一下四种:

set

multiset

map

multimap

不可以修改 set/multiset 容器中元素的值,如果要修改,则应该先删除再加入。

同理也不可以修改 map/multimap 容器中的元素的关键字

 

前置知识: pair 类模板

函数 make_pair (x,y) 生成一个 pair 类对象

 

multiset

成员函数

iterator find (const T & val)

iterator insert(const T & val)

int count(const T &val)

iterator lower_bound(const T & val )

查找最大的位置 it 使得 [begin(),it) 中所有元素都比 val 小

iterator upper_bound(const t & val)

查找最小位置 it 使得 [it,end()) 中所有元素都比 val 大

 

用 erase 成员函数删除迭代器 it 指向的值以后,it 立即失效,++it 没有意义

--it 使得it < s.begin() 时,it 立即失效,++it 没有意义

 

multimap

template<class Key, class T,class Pred = less <key> >
class multimap{
    typedef pair<const Key,T> value_type
}

 

iterator find (const Key & val)

iterator insert(pair<Key,T> const & p) 

将 pair 对象 p 插入容器并返回其迭代器

int count(const Key &val)

iterator lower_bound(const Key & val )

查找最大的位置 it 使得 [begin(),it) 中所有元素的 Key 都比 val 小

iterator upper_bound(const t & val)

查找最小位置 it 使得 [it,end()) 中所有元素的 Key 都比 val 大

 

注意 multimap 不可以用[]

 

标签:map,set,const,val,iterator,STL,pair,find,函数
来源: https://www.cnblogs.com/liankewei/p/16123134.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有