C++ 顺序容器库简介

一、引言

       C++标准库提供了几种顺序容器,所有顺序容器都提供了快速顺序访问元素的能力,但是,它们各自有不同的特性。新标准库的容器的性能有很大的提升,从某种程度讲,应该使用标准库容器,而不是原始的数据结构。

vector 可变大小数组,比较常用
deque 双端队列
list 双向链表
forward_list 单向链表
array 固定大小数组
string 保存字符串

二、容器的初始化

      假定C代表一种容器类型

C  c; 默认构造函数。如果是array,则按默认方式初始化,否则为空。
C  c1(c2); 构造c2的拷贝c1。容器、元素类型必须相同,array的大小也要相同。

C  c(b, e);

将迭代器b和e之间的元素拷贝到c。array不支持。
C  c{a, b, c, ....} 列表初始化c。对于array,元素数目小于等于array大小,遗漏元素会被初始化。
C c(n) c包含n个元素,并进行初始化。此函数是explicit的。string不适用。
C c(n, t) c包含n个初始化值为t的元素。
vector<int> vec(6, 2);    //一个vector类型容器,元素为6个2
array<int, 5> arr(3, 2);  //一个array类型容器,3个2,剩余的进行初始化

三、顺序容器操作

(1)添加元素(array不适用,因为数目会发生改变)

c.push_back(t) 在c末尾添加元素t
c.push_front(t) 在c头部添加元素t
c.insert(p, t) 在迭代器p前添加元素t
c.insert(p, n, t) 在迭代器p前添加n个元素t
c.insert(p, b, e) 在迭代器p前插入迭代器b和e之间的元素
c.insert(p, il) 在迭代器p之前插入il中的元素,il是一个元素值列表

(2)访问元素

c.back() 返回c中尾元素的引用
c.front() 返回c中头元素的引用
c[n] 返回下标n的元素的引用。list不适用
c.ar(n) 返回下标n的元素的引用。

(3)删除元素(array不适用,因为数目会发生改变)

c.pop_back() 删除 c中尾元素
c.pop_front() 删除c中头元素
c.erase(p) 删除迭代器p所指元素
c.erase(b, e) 删除迭代器b、e之间的元素
c.clear() 删除c中所有元素

注意,该种情况下,删除deque除头尾外任何元素,都会使所有迭代器、引用和指针失效;vector、string中删除点以后的迭代器、引用和指针会失效。

(4)改变容器大小

可以使用c.resize(n),调整容器大小为n个元素,多余的会被丢弃,新元素会被初始化                   //c.resize(n,t)  t为默认初始值

注意:forward_list有特殊的操作

猜你喜欢

转载自blog.csdn.net/qq_39786762/article/details/81211119