容器
set map multiset multimap,区别是否可以重复
unorderset unordered map,使用哈希表实现,但是是无序的
set 是一个集合,内部使用红黑树实现,容易查找
使用<表示大小,或者自定义大小来实现
插入元素,insert/emplace/emplace_hint
删除元素:erase
访问元素:find/contains(C++20),与vector的[]和at的访问,顺序容器里不包含find
修改元素:extract(C++20)
set迭代器所指向对象是const的,不能通过其修改元素
遍历打印输出的set的时候,输出结果是按照有序输出
set<int> s{3,6,1,45,223,32,65,2};
for (auto i = s.begin(); i != s.end(); i++)
{
/* code */
cout<<*i<<"_";
}
cout<<endl;
采用的中序遍历方法,实现
在内部使用比较器,来进行树的增长。
set<int,greater<int>> s{3,6,1,45,223,32,65,2};
//采用的是中序遍历
for (auto i = s.begin(); i != s.end(); i++)
{
/* code */
cout<<*i<<"_";
}
修改之后使用从大到小输出
map
容器的遍历:
std::map<char,int> m{{'a',3},{'c',6}};
cout<<m['c']<<endl;
for(auto p:m){
cout<<p.first<<p.second<<endl;
}
for(auto [p,k]:m){
cout<<p<<k<<endl;
}
注意:map迭代器指向的对象是pair类型,key值是对应的const类型
插入操作:
m.insert(pair<char,int>('v',5));