关联容器(set、map、multiset、multimap)  

Set(multiset元素值可以重复)

key为元素  set的内部元素根据其值自动排序  每个元素值只能出现一次 不可重复(multset相反)

1) 不能直接改变元素值,因为那样会打乱原本正确的顺序,要改变元素值必须先删除旧元素,则插入新元素

2) 不提供直接存取元素的任何操作函数,只能通过迭代器进行间接存取,而且从迭代器角度来看,元素值是常数

3) 元素比较动作只能用于型别相同的容器(即元素和排序准则必须相同)

    typedef set<char> CharSet;
    CharSet se;
    se.insert('s');
    CharSet::iterator it=se.begin();//定义迭代器 
    for(;it!=se.end();it++)
    {
         printf("%c\n",*it);
    }

set成员函数

begin()返回指向第一个元素的迭代器
clear()
清除所有元素
count()返回某个值元素的个数
empty()如果集合为空,返回true(真)
end() 
返回指向最后一个元素之后的迭代器,不是最后一个元素
equal_range()返回集合中与给定值相等的上下限的两个迭代器
erase()删除集合中的元素
find()返回一个指向被查找到元素的迭代器
get_allocator()
返回集合的分配器
insert()在集合中插入元素
lower_bound()返回指向大于(或等于)某值的第一个元素的迭代器
key_comp()
返回一个用于元素间值比较的函数
max_size()返回集合能容纳的元素的最大限值

rbegin() 
返回指向集合中最后一个元素的反向迭代器
rend()返回指向集合中第一个元素的反向迭代器
size()集合中元素的数目
swap()交换两个集合变量
upper_bound()
返回大于某个值元素的迭代器

value_comp()
返回一个用于比较元素间的值的函数


map(multimap  key可以重复)

不可有重复的key

    typedef map<int,string> M;
    M ma;
    ma[0]= "我是第零位";
    ma[1]= "我是第壹位";
    ma[2]= "我是第贰位";
    M::iterator it=ma.begin();//定义迭代器 
    for(;it!=ma.end();it++)
         printf("%d:%s\n",it->first,it->second.c_str());
成员方法:

      begin()          返回指向map头部的迭代器
      clear()         删除所有元素
      count()          返回指定元素出现的次数
      empty()          如果map为空则返回true
      end()            返回指向map末尾的迭代器
      equal_range()    返回特殊条目的迭代器对
      erase()          删除一个元素
      find()           查找一个元素
      get_allocator()  返回map的配置器
      insert()         插入元素
      key_comp()       返回比较元素key的函数
      lower_bound()    返回键值>=给定元素的第一个位置
      max_size()       返回可以容纳的最大元素个数
      rbegin()         返回一个指向map尾部的逆向迭代器
      rend()           返回一个指向map头部的逆向迭代器
      size()           返回map中元素的个数
      swap()            交换两个map
      upper_bound()     返回键值>给定元素的第一个位置
      value_comp()      返回比较元素value的函数



Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐