C++ standard library containers的一般用例是什么?
例如,对于配对搜索,地图通常更好。
答案 0 :(得分:83)
一张图片胜过千言万语。
它可以从 nolyc 获得,它是Freenode上## C ++的信息机器人,使用命令“container choice”或“containerchoice”。您收到此图片的链接位于 adrinael.net ,这表明我们应该感谢Freenode ## C ++社区成员 Adrinael 。
答案 1 :(得分:14)
bitset
- 用于存储位。通用 - 存储一些标志的值。你不需要超过1位。
deque
- 双端队列 - push_back,push_front,pop_back和pop_front - 基本类'方法。 “未排序”(无序)容器。
list
- 链表。这个容器不是内存连续的。添加和删除元素的时间是O(1),但寻找特定元素是O(n)。无序容器。
map
- 容器,存储对(std :: pair)。第一个是关键 - 地图中的每个元素都必须使用唯一键。地图表示为树,因此在地图中搜索元素是n * log(n)。此容器始终排序,这就是添加和删除元素可能导致更多时间的原因 - 树(数据结构)是二进制和平衡的。
multimap
- 与std :: map几乎相同,但允许具有相同键的对。例如,多图可以包含元素:(666,“alabala”),(666,“asdfg”),而标准的std :: map则不能。此容器也已排序。
multiset
- 再次 - 与set相同,但具有可重复的元素。设置 - 好吧,这也总是排序STL容器。例如,一个集合是{1,2,3},当你尝试将“1”添加到这个集合中时,它不会被添加,因为已经存在这样的元素。 (它类似于数学集合)。因此,multiset允许具有相同值的多个元素,例如{1,1,1,2,3,4,4,4,4}是正确的多集合,而它是不集合。在std :: set中添加和删除元素仍然是对数时间,因为它表示为二进制,排序和平衡树。
priority_queue
- 根据一些严格的弱排序条件,它的第一个元素总是它包含的最大元素。基本功能 - push_back和pop_back。
queue
- FIFO结构 - 先进先出。 (或与LILO相同 - Last In - Last Out)。它类似于标准队列 - 当你去商店并开始等待队列时,第一个将是第一个去的。你可以只是push_back和pop_front。无序容器。
set
- 我已经在multiset部分对其进行了描述。
stack
- LIFO - Last In - First Out - 堆叠。基本功能 - push_back,pop_back。无序容器。
vector
- 类似于标准c ++数组。它被视为常规数组,它的内存连续,可以传递给C程序(传递第一个元素的地址)。无序容器。
重要提示:我描述了基本功能,而不是整个功能。有关详细信息,请阅读CPlusPlus.com。