C++ Primer 第四版读书笔记(八)之顺序容器(续)
3.6 访问元素
如果容器非空,那么容器类型的front和back成员将返回容器内第一个或最后一个元素的引用。
c.back() | 返回容器c的最后一个元素的引用。如果c为空,则该操作未定义 |
c.front() | 返回容器c的第一个元素的引用。如果c为空,则该操作未定义 |
c[n] | 返回下标为n的元素的引用 如果n<0或n>c.size(),则该操作未定义 只适用于vector和deque容器 |
c.at[n] | 返回下标为n的元素的引用。如果下标越界,则该操作未定义 只适用于vector和deque容器 |
3.7 删除元素
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的第一个元素。返回viod。如果c为空容器,则该函数未定义 |
3.7.1 删除第一个或最后一个元素
pop_front和pop_back函数用于删除容器内的第一个和最后一个元素。但vector容器类型不支持pop_front操作。这些操作删除指定的元素并返回void。
pop_front和pop_back函数的返回值并不是删除的元素值,而是void。要获取删除的元素值,则必须在删除元素之前调用front或back函数。
3.7.2 删除容器内的一个元素
erase操作不会检查它的参数。程序员必须确保用作参数的迭代器或迭代器范围是有效的。
3.8 赋值与swap
与赋值相关的操作符都作用于整个容器。处swap操作外,其他操作都可以用erase和insert操作实现。赋值操作符首先删除其做操作数容器中的元素,然后将右操作数容器的所有元素插入到左边容器中。