成员函数
push_back()
:在容器中的末尾元素的后一个位置添加元素。
【注】:v.push_back(i);
表示将元素 i
添加到向量 v 的末尾。若括号中无参数则编译器会报错。
pop_back()
:删去容器中的末尾元素。
【注】:v.pop_back();
表示删去向量 v 中的末尾元素。若括号中有参数则编译器会忽略这个参数,不产生影响。
back()
:访问容器中的末尾元素。
front()
:访问容器中的第一个元素。
【注】:back()
和 front()
的括号不能省略,且括号内不能添加参数,否则编译器会报错。
at()
;访问容器中的指定元素。
【注】:v.at(i);
表示访问向量 v 中索引为 i 的元素。
size()
:返回容器中的元素个数(即数组长度)。
【注】:返回的是 $unsigned$ 型,需先 int len = v.size()
。
empty()
:检查容器是否为空,若为空返回 true
,否则返回 false
。
clear()
:移除容器中的所有元素。
insert()
:在容器中的指定位置之前插入元素。
【注】:v.insert(it, a)
; 表示在迭代器 it
指定的位置之前插入值为 a
的元素。若 it
为 v.end()
,则插入在容器的末尾。该操作可能会改变容器中其他元素的位置。
erase()
:删去容器中的指定(范围内的所有)元素。
【注】:v.erase(it);
表示删去迭代器 it
指向的元素。v.erase(start, end);
表示删去从迭代器 start
指向的元素到迭代器 end
(不包括 end
)指向的元素之间的所有元素。此操作会减少容器的大小,并可能改变剩余元素的位置。
相关迭代操作
begin()
:返回一个指向容器中的第一个元素的迭代器。
end()
:返回一个指向容器中的末尾元素的后一个位置的迭代器。
cbegin
:返回一个指向容器中的第一个元素的 $const$ 迭代器。
cend
:返回一个指向容器中的末尾元素的后一个位置的 $const$ 迭代器。(下同)
【注】:$c$ 即 $const$,保证遍历过程中容器中的元素内容不被修改。
rbegin
:返回一个指向容器中的第一个元素的前一个位置的反向迭代器。
rend
:返回一个指向容器中的末尾元素的反向迭代器。
【注】:$r$ 即 $reverse$,此时指向元素的方式对称。(下同)
crbegin
:返回一个指向容器中的第一个元素的前一个位置的反向 $const$ 迭代器。
crend
:返回一个指向容器中的末尾元素的反向 $const$ 迭代器。
auto
:允许自动推断变量类型,简化代码,提高可读性。
iterator
:提供遍历容器中的元素的方式,类似指针,支持访问和迭代操作。
【注】:vector<int>::iterator it = v.begin();
可以用 auto it = v.begin();
来简化写法。
reverse()
:反转容器中元素的顺序。
【注】:需 #include <algorithm>
,用法为 reverse(v.begin(), v.end());
。
对 insret()
用法的补充
在指定位置插入多个元素:
vector<int> v = {1, 2, 3, 7, 8, 9};
vector<int> toInsert = {4, 5, 6};
auto it = v.begin() + 3; // 在索引为 3 的位置之前插入
v.insert(it, toInsert.begin(), toInsert.end());
在末尾添加多个元素:
vector<int> v = {1, 2, 3, 4, 5};
vector<int> toAdd = {6, 7, 8};
v.insert(v.end(), toAdd.begin(), toAdd.end());