【C++】泛型算法(四)使用顺序性容器

一、顺序性容器

顺序性容器用来维护一组有序、类型相同的元素。
主要是:vector和list。

1.vector

  1. vector是用一块连续的内存存放数据;
  2. vector进行随机访问,效率比较高(适合数列);
  3. vector对于插入和删除操作效率较低:这是由于vector内的每个元素都被存储在距离起始点固定的偏移位置,当进行插入操作时,如果插入的位置不是vector的尾端,那么就需要把插入位置右端的数据复制一份在右移;删除操作同理。

2.list

  1. list容器是双向链接(double-linked);
  2. 和vector的区别:并非用连续内存空间存储数据
  3. list容器中每个元素包含三个部分:value、back(指向前一个元素)、front(指向下一个元素);
  4. 对list进行任意位置的插入和删除操作,效率较高。

3.deque

  1. deque容器和vector类似,都是以连续内存存储元素;
  2. deque容器和vector区别:deque可以进行最前端元素的插入和删除操作。

二、头文件

#include 
#include 
#include 

三、定义顺序性容器对象的方式

1.产生空的容器

list<string> slist;
vector<int> ivec;

2.产生特定大小的容器

每个元素都以其默认值作为初值。
(int 和double这类语言内置的算术类型,其默认值为0)

list<string> ilist(1024);
vector<int> svec(32);

3.定义特定大小的容器,并为每个元素指定初值

vector<int> ivec(10-1);
list<string> slist(16,“unassigned”);

4.通过数组产生容器,并指定初值的元素的范围

int ia[8] = { 1,2,3,4,5,6,7,8 };
vector<int> fib(ia, ia + 8);

5.由某个容器产生出新容器

复制原容器内的元素,作为新容器的初值:

list<string> slist;//空容器
//填充slist...
list<string> slist2(slist);//将slist复制给slist2

四、容器末尾进行写入(插入)和弹出(删除)操作

  • push_back()和pop_back();
  • list和deque(不包括vector)还提供了push_front()和pop_front();
  • 读取最前端和最末端的元素应该使用front()和back().
vec.push_back(1);//末端写入一个元素1
vec.pop_back();//删除最后一个元素

另:
每个容器除了拥有通用的插入函数insert(),还支持其四种变形;除拥有通用的删除函数erase(),还支持其两种变形。(略)

你可能感兴趣的:(C++基础,c++,开发语言,笔记)