STL-容器

    技术2022-05-19  20

    标准STL容器: 顺序容器:vector、string、deque、list 关联容器:set、multiset、map、multimap 非标准容器: 顺序容器:slist、rop 关联容器:hash_set、hash_multiset、hash_map、hash_multimap 标准的非STL容器: 数组、bitset、valarray、stack、queue、priority_queue 各种容器的实现机理: 一、vector vector容器分配的是一块连续的内存空间,三个指针_First,_Last,_End分别指向第一个元素、最后一个元素、当前存储区的末尾位置。 当当前存储区不够时,vector采用的策略是重新开辟一段更大的内存,并将当前容器中的内容拷贝过去。 成员: back()     //最后一个元素的引用 begin()    //第一个元素的迭代器 end()      //最后一个元素的下一个位置的迭代器 capacity() //_End-_First    容量 size()     //_Last-_First   元素个数 特点: 可以随机访问,push_back,pop_back,单一进入 二、list双向循环链表 不可以随机访问,push_back,pop_back,push_front,pop_front,双进双出 三、deque 以损失效率为代价,提供了比vector更方便强大的线性容器,比vector的性能差几个数量级 它的内存并不是连续的,只是让用户感觉到它是连续存储的。 stack与queue都是建立在deque上的 提供双进双出、操作方便、功能强大、效率低下,万不得已不可使用。 三、stack、queue、priority_queue stack与queue是基于deque的 priority_queue是基于vector的 stack只有pop与push等简单操作,不允许遍历 deque只允许在顶与底进行操作,不允许遍历 priority_queue带权队列 四、关联容器 set与map均采用红黑树实现 set键值相同,要求元素惟一 如果插入一个相同的元素,将插入失败,不可以用下标访问 map拥有键和值,键要求惟一 可以通过下标访问,但如果键不存在,将会新建一个元素,并返回end multiset、multimap除了允许多个元素重复外,其他的与上面的相同。


    最新回复(0)