C++顺序容器

顺序容器

1. 概述

顺序容器:提供控制元素存储和访问顺序的能力。这种顺序与元素的值无关,只与元素加入容器的顺序相关。按照元素在容器中的位置来顺序保存和访问。

容器名称 容器特性
vector 可变大小数组。支持快速随机访问。在尾部之外的位置插入或删除元素可能很慢
array 固定大小数组。支持快速随机访问。不能添加或者删除元素
string 专门用于保存字符的可变大小数组。支持快速随机访问。在尾部插入删除速度很快
deque 双端队列。支持快速随机访问。在头或者尾部插入或者删除速度很快
list 双向链表。支持双向顺序访问。任何位置进行插入删除速度都很快
froward_list 单向链表。支持单向顺序访问。任何位置进行插入删除速度都很快

2. 容器操作

2.1 添加元素
  • c.push_back(t):在c容器的尾部添加一个值为t的元素,返回voidforward_list、array不支持此操作
  • c.push_front(t):在c容器的头部创建一个值为t的元素,返回voidarray、vector、string不支持此操作
  • c.emplace_back(args):在c容器的尾部添加一个由args创建的元素,返回voidforward_list、array不支持此操作
  • c.emplace_front(args):在c容器的头部添加一个由args创建的元素,返回voidarray、vector、string不支持此操作
  • insert
    • c.insert(p,t):在迭代器p指向的元素之前插入一个值为t的元素,返回新元素的迭代器。
    • c.insert(p,n,t):在迭代器p指向的元素之前插入n个值为t的元素,返回新添加的第一个元素的迭代器,n为0则返回p
    • c.insert(p,b,e):将迭代器pe指定范围内的元素插入到迭代器p指向的元素之前,返回新添加的第一个元素的迭代器,范围为空返回p
    • c.insert(p,il)il为花括号包围的元素值列表,将这些值插入到迭代器p指向的元素之前。返回新添加的第一个元素的迭代器,列表为空返回p
    • forward_list有自己特有的insertarray不支持此操作
  • c.emplace(p,args):在迭代器p指向的元素之前插入由args创建的元素,返回新元素的迭代器。forward_list有自己特有的emplacearray不支持此操作
  • 注意:向vector、string、deque插入元素会使原有的迭代器、引用和指针失效
2.2 访问元素
基本操作
操作 说明
c.back() 返回c中尾元素(不是尾后)的引用。c为空,函数行为未定义
c.front() 返回c中首元素的引用。c为空,函数行为未定义
c[n] 返回c中下标为n的元素的引用,n为无符号整数。n越界,函数行为未定义
c.at(n) 返回c中下标为n的元素的引用。n越界,抛出out_of_range异常
注意事项
2.3 删除元素
基本操作
操作 说明
c.pop_back() 删除c中尾元素,返回voidc为空,函数行为未定义。
c.pop_front() 删除c中首元素,返回voidc为空,函数行为未定义。
2.4 其他操作
  • sort函数排序
    • 包含在algorithm头文件中
    • void sort(RandomAccessIterator first,RandomAccessIterator last,Compare comp);
      • first:要排序数组的起始迭代器或地址
      • last:结束数据的后一个迭代器或地址
      • comp:排序算法,默认从小到大排序。bool comp(a,b)