STL 关联容器之map(有序且键唯一)

    xiaoxiao2021-03-26  27

    参考资料:http://www.cplusplus.com/reference/map/map/

    map是按特定顺序存储以键值对结合而成的元素的关联容器。

    一、常用API

    1,构造函数

    std::map<char,int> first; first['a']=10; first['b']=30; first['c']=50; first['d']=70; std::map<char,int> second (first.begin(),first.end()); std::map<char,int> third (second); struct classcomp {   bool operator() (const char& lhs, const char& rhs) const   {return lhs<rhs;} }; std::map<char,int,classcomp> fourth;                 // class as Compare bool fncomp (char lhs, char rhs) {return lhs<rhs;} bool(*fn_pt)(char,char) = fncomp; std::map<char,int,bool(*)(char,char)> fifth (fn_pt); // function pointer as Compare

    2,迭代器

    【begin】【end】 std::map<char,int>::iterator it=mymap.begin();  it!=mymap.end()

    【cbegin】【cend】常迭代器 const_iterator   auto it=mymap.cbegin()

    【rbegin】【rend】 逆序迭代器 reverse_iterator

    【crbegin】【crend】常逆序迭代器 const_reverse_iterator

    3,容量大小

    【empty】判断map是否为空 mymap.empty()  为空返回true,否则返回false

    【size】返回当前map中存储元素的个数 mymap.size()

    【max_size】map所能存在元素的最大个数 mymap.max_size()

    4,增删改查操作 

    【clear】清空map中的所有元素 mymap.clear()

    【count】查找map中某key是否存在 mymap.count('key') 若存在返回1,否则返回0

    【find】 查找map中指定key,返回指向该值的迭代器 it=mymap.find('key')

    【at】访问元素 mymap.at('key')=value

    【[]】访问元素 mymap["key"]

    【equal_range】返回值匹配给定搜索值的元素组成的范围

    std::pair<std::map<char,int>::iterator,std::map<char,int>::iterator> ret;  ret = mymap.equal_range('b'); std::cout << "lower bound points to: ";  std::cout << ret.first->first << " => " << ret.first->second << '\n'; std::cout << "upper bound points to: "; std::cout << ret.second->first << " => " << ret.second->second << '\n';

    【lower_bound】返回指向容器中第一个主键等于给定搜索值或在给定搜索值之后的元素的迭代器 std::map<char,int>::iterator itlow; itlow=mymap.lower_bound ('b');

    【upper_bound】返回指向容器中第一个主键在给定搜索值之后的元素的迭代器 std::map<char,int>::iterator itlow; itlow=mymap.lower_bound ('b');

    【insert】map中插入元素

    mymap.insert ( std::pair<char,int>('a',100) ); std::pair<std::map<char,int>::iterator,bool> ret; ret = mymap.insert ( std::pair<char,int>('z',500) ); mymap.insert (it, std::pair<char,int>('b',300)) anothermap.insert(mymap.begin(),mymap.find('c'));

    【erase】删除指定key,或者迭代器指定的值或范围 mymap.erase('key')   mymap.erase(it)  mymap.erase(it, mymap.end())

    【emplace】【emplace_hint】构造并插入元素

    【swap】交换两个map的元素 mymap1.swap(mymap2)

    转载请注明原文地址: https://ju.6miu.com/read-663656.html

    最新回复(0)