STL之关联式容器
关联式容器
- 无序(插入顺序)
- 不连续
set
#include <set>
#include <iostream>
int main()
{
std::set<int> demo;
demo.insert(10);
demo.insert(10);
demo.insert(10);
demo.insert(10);
demo.insert(10);
demo.insert(50);
demo.insert(50);
demo.insert(50);
// 错误, 不能修改
// *demo.begin() = 20;
// 语法上对了 但是还是不能改
// *(const_cast<int*>(&(*(demo.begin())))) = 20;
for (auto value : demo)
{
std::cout << value << std::endl;
}
return 0;
}结果:
10
50特性:
- 只能insert
- *begin()不能修改
- 不能重复
不支持修改
- 因为它是
红黑树实现的, 红黑树是有序排列的 - 修改了值, 红黑树的有序排列就乱了
- 因为它是
map
存放的是 pair
#include <set>
#include <iostream>
int main()
{
std::map<int, char> demo;
std::pair<int, char> value;
value.first = 20;
value.second = '2';
demo.insert(value);
demo.insert(std::pair<int, char>(1, '0'));
demo[10] = '9';
demo[20] = '5';
demo[50] = '3';
for (auto value : demo)
{
std::cout << value.first << "-->" << value.second << std::endl;
}
return 0;
}如有错误,请提出指正!谢谢.
本文由 花心胡萝卜 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为: 2017-04-20 at 03:11 pm