vector

std::vector

使用连续的内存来存储数据,大小可以动态改变

扩容是个耗时操作,vector会预先分配额外的空间

一维vector

vector的初始化

  • 通过数组初始化
1
2
int a[3] = {1, 2, 3};
vector<int> vec(a, a+3);
  • 带初值的初始化
1
vector<int> vec(10, 0); //10个元素的vector,每个元素都是0
  • vector<vector<int>> 的初始化

和上面一维的一对照就能明白

1
vector<vector<int>> vec(row, vector<int>(col, 0));

遍历

1
2
3
4
vector<int> v;
for(auto i : v) {
cout << i << endl;
}

删除vector中的元素

1
2
3
4
for (vector<int>::iterator it = nums.begin(); it != nums.end(); it++)
{
nums.erase(it, it+1);
}

二维vector<vector<>>

初始化

遍历

迭代器遍历

1
2
3
4
5
6
7
vector<vector<int>> v;
for(vector<vector<int>>::iterator iter = v.begin(); iter != v.end(); ++iter) {
for (vector<int>::iterator it = iter->begin(); it != iter->end(); ++it) {
cout << *it;
}
cout << endl;
}

下标遍历

1
2
3
4
5
6
7
vector<vector<int>> v;
for (int i = 0; i < v.size(); ++i) {
for (int j = 0; j < v[i].size(); ++j) {
cout << v[i][j];
}
cout << endl;
}
1
2
3
4
5
6
7
vector<vector<int>> v;
for (int i = 0; i < v.size(); ++i) {
for (int value : v[i]) {
cout << value;
}
cout << endl;
}

增加,删除

Reference

  1. vector的几种初始化及赋值方式