该结构适用于查、改操作;不适用于交换、删除、增加数据的操作;其性能、速度与原始数组相差无几。
常用函数
该结构适用任何地方插入和删除;随机访问比较慢。
在链表的任何位置(除尾部不能插入和删除)进行插入/删除操作都非常快;只能从头到尾遍历,不能从尾部开始遍历(不提供size()成员函数;不支持反向迭代器,比如rbegin()等成员函数;不提供back()、push_back()和pop_back())。
该结构特点是先进先出;队尾添加数据,队头删除数据;不适用于查找数据。
该结构是队头队尾都可以添加删除数据。
该结构用于尾部插入和删除的情况;中间和头部插入比较麻烦。
该结构特点是后进先出。
该结构是一种类似数组的结构,它的每一个元素只能是0或1,每个元素仅用1bit空间。
该结构的内部是红黑树(具有对数据自动排序的功能);可以存储任意类型的数据,包括使用者自定义的数据类型;关键字(key),只能在map中出现一次,第二个称该关键字值(value)。
该结构主要用于一个key值对应多个value的情况,即允许重复的元素。
该结构内部是哈希表(存储元素没有进行排序),根据key查找单个value时非常高效;查询单个key的时候效率比map高,但是要查询某一范围内的key值时比map效率低。
该结构是关键字即值,即只保存关键字的容器。
vector<bool>可以动态增长,但不能方便地进行位运算;bitset可以方便的进行二进位位运算,但不能动态增长。dynamic_bitset提供丰富的位运算,同时长度动态可变。
c++提供的映射型容器map和multi_map,把一个key映射到value,但是这种映射关系是单向的,不能反过来,bimap提供双向映射的能力;对于bimap<X,Y>存在左视图和右视图。bimap.left相当于map<X,Y>,bimap.right相当于map<Y,X>;key/value值对必须为唯一的,插入任何一个重复的都是无效的。
bimap<int,int> bimap_;
该结构支持标准的容器操作(pushback),但大小固定,当到达容器尾将自动重用最初的空间;实现了一个大小固定的循环队列,就像deque和stack的混合体,可以像普通双端队列那样执行pushback(),pushfront(),insert()等,也可像栈一样用pop_back(),pop_front()删除元素。
该结构是一个有固定数目元素的容器,每个元素类型可以不同;类似pair,只是里面的元素更多,可将pair可以看作tuple的特例,tuple是pair的泛化。
该结构只能容纳一个元素,但是这个元素可以是任意类型(int、float、string、stl容器、任何自定义类型)。
该结构是枚举类型,但其元素可以string、vector等复杂类型;与any的区别,variant是有界类型,元素类型范围由用户指定,any是无界类型,可以容纳任意的类型。
该结构实现了stl风格的多维数组,比使用原始多维数组、vector<vector>更好。
多个属性值的树形数据结构,可以类似路径的简单方式访问任意节点的属性,而每个节点都可以用类似stl的风格遍历子节点,特别适用于应用程序的配置数据处理,可以解析xml、ini、json、info四种格式的文本数据。
推荐阅读: