关联容器

vector<int> ivec;
for(int i = 0 ; i < 10 ; i ++){
    ivec.push_back(i);
    ivec.push_back(i);
}
set<int> iset(ivec.cbegin(),ivec.cend());
multiset<int> miset(ivec.cbegin(),ivec.cend());
cout<<iset.size()<<endl; //10
cout<<miset.size()<<endl;//20
cout<<ivec.size()<<endl; //20

set,map不允许重复元素,multiset,multimap允许重复元素

pair类型 pair是一种标准库类型,定义在头文件utility中
pair需要提供类型 ,形如 pair<string,string> ano
或者pair<string,size_t>
对他们进行值初始化,pair的两个成员被命名为first 和second
创建pair的元素

关联容器类型

key_type 关键字类型
mapped_type 每个关键字关联类型,只适用于map
value_type 对于set 和key_type相同,对于map,为pair<const key_type,mapped_type>

迭代器类型
set 和 map的迭代器的特别之处
set的迭代器是const的,不能改变元素
set<int>::iterator setit = iset.begin();

map<int, string>::iterator  iter;  
       for(iter = mapStudent.begin(); iter != mapStudent.end(); iter++)  
       {  
          cout<<iter->first<<" "<<iter->second<<endl;  
       }  

map 和 set 添加元素
set.insert(xxx)
set.insert({1,3,5,6})

map.insert(make_pair(a,b))
map.insert(pair<string,int>(a,b))
通过检测insert的返回值
如果已经插入容器,返回bool 值为true
如果没有插入,返回bool值为false

访问元素

对于set iset.count(1) 找元素1出现的次数 iset.find(1) 找元素1的迭代器,找不到返回尾后迭代器 对于map find 和count 作用在关键字上

map[key]++ 操作,可以看成数组,对于map

你可能感兴趣的:(关联容器)