vector动态数组
初始化
- 初始化列表
- n个相同的元素
- 复制另一个vector初始化
- 复制另一个vector的一部分初始化
代码示例
int main(int argc, char const *argv[])
{
vector<int> vi = {20, 30};
vi.push_back(45);
vi.push_back(67);
for (auto& v : vi) {
cout << v << " ";
}
cout << endl;
vector<int> vec1(5, 23);
for (auto& v : vec1) {
cout << v << " ";
}
cout << endl;
vector<int> vec2(vec1);
for (auto& v : vec2) {
cout << v << " ";
}
cout << endl;
vector<int> vec3(vec1.begin(), vec1.begin() + 3);
for (auto& v : vec3) {
cout << v << " ";
}
cout << endl;
return 0;
}
20 30 45 67
23 23 23 23 23
23 23 23 23 23
23 23 23
查找元素
auto it = find(vi.begin(), vi.end(), 67);
插入元素
- 在某个位置插入一个元素
- 在某个位置插入n个相同的元素
- 在某个位置插入另一个vector的元素
代码示例
int main(int argc, char const *argv[])
{
vector<int> vi = {20, 30};
vi.push_back(45);
vi.push_back(67);
vi.insert(vi.begin(), 123);
vi.insert(vi.end(), 2, 89);
vector<int> temp(3, 100);
vi.insert(vi.begin() + 1, temp.begin(), temp.end());
return 0;
}
20 30 45 67
123 20 30 45 67
123 20 30 45 67 89 89
123 100 100 100 20 30 45 67 89 89
迭代器
begin()
end()
cbegin()
cend()
访问元素
- 迭代器
- 下标运算符[]
- 成员函数at()
int main() {
vector<int> vi;
vi.push_back(45);
vi.push_back(67);
cout << *vi.cbegin() << endl;
auto it = find(vi.begin(), vi.end(), 67);
if (it != vi.end()) {
int index = distance(vi.begin(), it);
cout << *it << endl;
cout << index;
}
}
删除元素
pop_back()
大小和容量
size(): 返回vector大小
capacity(): 返回vector容量,容量不够时会自动重新分配