顺序容器的基本操作
1.初始化
C<T> c; // 创建一个名为c的空容器。C是容器类型名,如vector,T是元素类型,如int或string。适用于所有容器。
C c(c2); // 创建容器c2的副本c;c和c2必须具有相同的容器类型,并存放相同类型的元素。适用于所有容器。
C c(b, e); // 创建c,其元素是迭代器b和e表示的范围内元素的副本。适用于所有容器。
C c(n, t); // 用n个值为t的元素创建容器c,其中值t必须是容器类型C的元素类型的值,或者是可转换为该类型的值。只适用于顺序容器。
C c(n); // 创建有n个值初始化元素的容器c。只适用于顺序容器。
2.begin和end成员
c.begin(); // 返回一个迭代器,它指向容器c的第一个元素。
c.end(); // 返回一个迭代器,它指向容器c的最后一个元素的下一位置。
c.rbegin(); // 返回一个逆迭代器,它指向容器c的最后的一个元素。
c.rend(); // 返回一个逆迭代器,它指向容器c的第一个元素前面的位置。
3.添加元素
c.push_back(t); // 在容器c的尾部添加值为t的元素。返回void类型。
c.push_front(t); // 在容器c的前端添加值为t的元素。返回void类型。只适用于list和deque容器类型。
c.insert(p, t); // 在迭代器p所指向的元素前面插入值为t的新元素。返回指向新添加元素的迭代器。
c.insert(p, n, t); // 在迭代器p所指向的元素前面插入n个值为t的新元素。返回void类型。
c.insert(p, b, e); // 在迭代器p所指的元素前面插入由迭代器b和e标记的范围内的元素。返回void类型。
4.容器大小
c.size(); // 返回容器c中的元素个数。返回类型为c::size_type。
c.max_size(); // 返回容器c可容纳的最多元素个数。返回类型为c::size_type。
c.empty(); // 返回标记容器大小是否为0的布尔值。
c.resize(n); // 调整容器c的长度大小,使其能容纳n个元素。如果n<c.size(),则删除多出来的元素;否则,添加采用值初始化的新元素。
c.resize(n, t); // 调整容器c的大小,使其能容纳n个元素。所有新添加的元素值都为t。
5.访问元素
c.back(); // 返回容器c的最后一个元素的引用。如果c为空,则该操作未定义。
c.front(); // 返回容器c的第一个元素的引用。如果c为空,则该操作未定义。
C[n]; // 返回下标为n的元素的引用。如果n<0或n>=c.size(),则该操作未定义。只适用于vector和deque容器。
c.at(n); // 返回下标为n的元素的引用。如果下标越界,则该操作未定义。只适用于vector和deque容器。
6.删除元素
c.erase(p); // 删除迭代器p所指的元素。返回一个迭代器,它指向被删除元素后面的元素。如果p指向容器内的最后一个元素,则返回的迭代器指向容器的超出末端的下一个位置。如果p本身就是指向超出末端的下一位置的迭代器,则该函数未定义。
c.erase(b, e); // 删除迭代器b和e所标记的范围内所有的元素。返回一个迭代器,它指向被删除元素段后面的元素。如果e本身就是指向超出末端的下一位置的迭代器,则返回的迭代器也指向容器的超出末端的下一位置。
c.clear(); // 删除容器c内的所有元素。返回void。
c.pop_back(); // 删除容器c内的最后一个元素。返回void。如果c为空容器,则该函数未定义。
c.pop_front(); // 删除容器c的第一个元素。返回void。如果c为空容器,则该函数未定义。只适用于list或deque容器。
7.赋值
c1=c2; // 删除容器c1的所有元素,然后将c2的元素赋值给c1。c1和c2的类型(包括容器类型和元素类型)必须相同。
c1.swap(c2); // 交换内容:调用完该函数后,c1中存放的是c2原来的元素,c2中存放的则是c1原来的元素。C1和c2的类型必须相同。该函数的执行速度通常要比将c2的元素复制到c1的操作要快。
c.assign(b, e); // 重新设置c的元素:将迭代器b和e标记的范围内所有的元素复制到c中。b和e必须不是指向c中元素的迭代器。
c.assign(n, t); // 将容器c重新设置为存储n个值为t的元素。