April 23, 2018
by Frank
一个容器就是一些特定类型对象的集合。顺序容器提供了控制元素存储和访问顺序的能力。
一个容器就是一些特定类型对象的集合。顺序容器提供了控制元素存储和访问顺序的能力。 顺序容器类型
选取顺序容器的一些准则:
关于顺序容器的大部分操作都可以在 C++的 API 中查到,本文不再赘述,在这里仅谈几个注意事项: 关于迭代器:
关于swap:未完待续 关于forward_list:未完待续 关于string:未完待续
vector 对象是连续存储的,标准库实现者采取了可以减少容器空间重新分配次数的策略,当不得不获取新的内存空间时,vector 和 string 的实现通常会分配比新的空间需求更大的内存空间,在使用该策略后,其扩张速度通常比 list 和 deque 快得多。
需要注意 capacity 和 size 的区别:容器的 size 是指它已经保存的元素的数目;而 capacity 则是在不分配新的内存空间的前提下其最多能保存的元素个数。
除了顺序容器外,标准库还定义了三个顺序容器适配器:stack,queue 和 priority_queue。适配器(adapter)是标准库中的一个通用概念。容器,函数和迭代器都有适配器。本质上,一个适配器是一种机制,能使某种事物的行为看起来像另外一种事物一样。一个容器适配器接受一种已有的容器类型,使其行为看起来像一种不同的类型。
例如,stack 适配器接受一种已有的容器类型,使其行为看起来像 stack 一样。可以理解为利用某种顺序容器实现的 stack 类,并且抽象出来了 pop(),push()等操作。
priority_queue 和 queue 的区别在于 priority_queue 可以为队列中的元素建立优先级。至于 stack,queue,priority_queue 三者的具体操作细节,可以查看 C++的相关 API。