STL容器之串行容器概要

news/2024/6/3 19:22:39 标签: 容器

sequence containers,其中的元素都可序(ordered),但未必有序(sorted)。

串行容器包括vector,heap,priority_queue,list,slist,deque,stack,queue。其实string也可以算一个串行容器,和vector还很像。不过string使用copy-on-write技术,vector使用预留容量和深拷贝。

vector在<vector>中定义,list是双向链表,在<list>中定义,deque是双端队列,在<deque>中定义。

slist是sgi的扩展,不属于标准的一部分,不过单向链表却很有用。
注:c++11已经提供了单向链表forward_list。

queue和priority_queue在<queue>中定义,stack在<stack>中定义,它们已在前边介绍过。

heap以算法形式呈现,也已在前边介绍过。

所以,这里介绍的串行容器有:vector,list,deque,slist。

containerdescription
vector动态数组,可作为c++内置数组的替代型态,vector有如同数组一样的访问方式,例如使用下标(subscript)运算符,并记得自己的长度信息(size),您也可以使用对象的方式来访问vector(push、pop)。vector可在常量时间内完成在vector末尾插入/移除元素,但在vector中间或开头插入/移除元素,则需要消耗线性时间。
listlist容器的每个元素中存储着上一个元素和下一个元素的地址(指针),因此是一个双向链接的链表。与vector相比,其元素的访问速度较慢,而在已知元素位置的情况下,插入和删除速度较快。
deque可看做为能在常量时间内完成向开头或结尾插入或删除元素的vector,但是修改之后,其迭代器的有效性就无法得到保障。
slist单向链表,相比list并做出了一些优化,比如insert_after(),erase_after()

http://www.niftyadmin.cn/n/1453460.html

相关文章

信号量、互斥量和临界区访问范围上的差别

信号量、互斥量和临界区都是用来支持线程同步的工具&#xff0c;它们的作用大体上类似&#xff0c;这里简要描述一下它们在访问范围上的差别。 信号量在整个系统中可以被任意进程的任意线程获取并释放。也就是说&#xff0c;它是可以被跨进程访问的&#xff0c;而且被线程A获取…

STL容器之vector

template < typename T, typename Alloc allocator<T> > class vector;《源码剖析》上vector部分倒也不复杂&#xff0c;可源码也不是太简单&#xff0c;我大体浏览了一遍&#xff0c;发现如真要详细看看&#xff0c;也需要不少时间。所以就理解了个大概&#xff…

uva 11536 - Smallest Sub-Array(Towpointer)

题目大意&#xff1a;uva 11536 - Smallest Sub-Array 题目大意&#xff1a;按照题目中的要求构造出一个序列&#xff0c;找出最短的子序列&#xff0c;包含1~k。 解题思路&#xff1a;先根据题目的方法构造出序列&#xff0c;然后用Towpointer的方法&#xff0c;用v[i]来记录当…

顺序容器 (1)string类型操作

1 #include "stdafx.h"2 #include <string>3 #include <iostream>4 using namespace std;5 int _tmain(int argc, _TCHAR* argv[])6 {7 string s"352225198807081013.10086.777.505";8 int pos s.find_last_of(".");//string查找操…

STL容器之bitset

bitset用来方便地管理一系列的bit位&#xff0c;它并不是一个标准的容器。 bitset定义于<bitset>中&#xff1a; template <size_t N> class bitset;bitset的接口 构造函数 // 默认构造函数, 初始化为全0 bitset(); // 以val初始化各比特位 bitset(unsigned lo…

获取android屏幕大小

在Nexus one下测试&#xff0c;结果是w&#xff1a;480&#xff0c;h&#xff1a;800&#xff0c;这个数值不随屏幕横向或纵向而变化。 这里牵扯到多个对象&#xff1a; ActivityWindow&#xff1a;Activity打开一个Window&#xff08;可以认为Activity包含一个Window&#xff…

STL容器之vectorbool

vector有一个针对bool类型的specialization&#xff0c;也定义于<vector>中&#xff0c;sgi将它实现于<stl_bvector.h>中&#xff1a; template < class T, class Alloc allocator<T> > class vector; // generic template template <class Alloc…

uva 1481 - Genome Evolution(暴力)

题目链接&#xff1a;uva 1481 - Genome Evolution 题目大意&#xff1a;给出两个长度为n的集合&#xff0c;问说两个集合存在多少个相同的连续子集合。 解题思路&#xff1a;暴力枚举&#xff0c;记录第一个集合&#xff0c;第二个集合则是记录每个数出现的位置&#xff0c;以…