C++中set和map有啥区别

Posted

技术标签:

【中文标题】C++中set和map有啥区别【英文标题】:What is the difference between set and map in C++C++中set和map有什么区别 【发布时间】:2016-03-24 17:43:12 【问题描述】:

考虑创建电话簿,但不知道哪个 STL 容器更好。请解释set和map之间的区别。在哪种情况下哪个是更好的选择。

例如,当名称和数字存储在地图中时,如果将名称作为键,则无法使用数字进行搜索,反之亦然。那么究竟哪种容器/数据结构可以达到这个目的呢?

【问题讨论】:

***.com/questions/21804086/… What is the difference between set vs map in C++?的可能重复 What is the difference between set vs map in C++?、What is the difference between std::set and std::map等可能重复 【参考方案1】:

内部很少。它们都是红黑树。

map 虽然包含一对作为其值类型。然后,树操作仅对该对中的第一个元素进行操作。然后 Map 添加额外的功能来基于第一个元素进行搜索并仅检索第二个元素。

当你需要 key->value 对时使用 map。当您需要整体跟踪唯一值时使用 set。

【讨论】:

【参考方案2】:

std::set 视为std::map,其中键也是值。

【讨论】:

以上是关于C++中set和map有啥区别的主要内容,如果未能解决你的问题,请参考以下文章

List 、Set、 Map有啥区别和联系

peptide map DDA和IMS有啥区别

c++ 中的 map 和 unordered_map 在内存使用方面有啥区别吗?

C++ unordered_map 的 rehash() 和 reserve() 方法有啥区别?

C++中map/set和unordered_map/unordered_set的区别及其适用情况

数组,list,map,set各有啥优缺点;