关联容器map set

关联容器支持关键字查找和访问。两个主要类型是map和set。一个unordered multi_set是一个允许重复的关键字的,元素无序保存,一个set是一个要求不重复关键字的,有序存储的集合。

map和multimap的头文件map中,set,multiset在set中。set只是查看关键字是否存在。

map<string,size_t> word_count;

string word;

++ word_count[word];

for (const auto &w:word_count)#(取了之后,后续操作有可能会改动该变量,声明了const就不让你改)

cout<<w.first<<w.second<<endl;

#pair   <first,second>

set

set<string> exclude = {"the","end"}

map的初始化:map<string,size_t>authors = {{"joy","ey"},{"",""}}

string word;

cin>>word;

if (exclude.find(word) == exclude.end())#没找到(find返回一个迭代器,)

关联容器根据关键字存储,不能对位置操作。

multimap:

多个元素有相同的关键字vector<int>vec;

for(vector<int>::size_type i = 0 ;i!= 10; ++i)

{

vec.push_back(i);

vec.push_back(i);

}

set<int> iset(vec,cbegin(),vec.cend());

multiset<int>miset(vec,cbegin(),ivec.cend())

map中key_type,mapped_type关键字类型与值的类型

插入元素:set.insert(vec.cbegin(),vec.cend())

set.insert({1,2})

word.insert({word,1})  word.insert(make_pair(word,1))  

删除 erase()

c.erase(b,e)删除范围

c[k]返回关键字k的元素,没有时进行初始化

c.at(k) 返回元素,不在时返回异常

set.find(11)返回一个迭代器,指向key=1 的元素或者返回set.end()

set.couont(1),返回个数或者0


,map中 swap的用法:
  Map中的swap不是一个容器中的元素交换,而是两个容器交换;
  For example:
  #include <map>
  #include <iostream>

  using namespace std;



.map的sort问题:
  Map中的元素是自动按key升序排序,所以不能对map用sort函数:
  For example:
  #include <map>
  #include <iostream>


迭代器:set<int> iset = {}

set<int>::iterator set_it  = iset.begin()

if(set_it != set.end())

{

cout<<*set_it 只读的}


map.find()返回时迭代器,指示的是找到的元素的位置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值