C++中vector的使用方法

一、定义以及初始化

vector<int> a(n);

创建一个长度为n的int型数组,所有元素默认初始化为0

等价于:

vector<int> a(n,0);

也可以指定初始值:

vector<int> a(5,7); // a = {7, 7, 7, 7, 7}

二、一维vector的常用操作

1. 增加元素

a.push_back(10);

2.删除末尾元素

a.pop_back();

3.访问元素

int x = a[2]; // 下标访问,不越界时最快
int y = a.at(2); // 安全访问,越界会抛异常

4.遍历数组

for (int i = 0; i < a.size(); i++) {
cout << a[i] << " ";
}

for(int val : a)
{
cout << val << " ";
}

5.求长度

int len = a.size();

6.清空数组

a.clear();

7.判断是否为空

if(a.empty()) {
cout << "a is empty";
}

三、二维vector

二维数组vector<vector<int>>可以模拟C++的int a[n][m];

1.定义方法

int n = 3, m = 4;
vector<vector<int>> a(n,vector<int>(m, 0));
// 也可以省略初值,默认为0
vector<vector<int>> a(n,vector<int>(m));

2.访问元素

a[0][1] = 5;
cout << a[0][1];

3.遍历二维vector

for (int i = 0; i < a.size(); i++) {
for(int j = 0; j < a[i].size(); j++) {
cout << a[i][j] << " ";
}
cout << "\n";
}
// 或者:
for(auto& row : a) {
for(val : row) {
cout << val << " ";
}
cout << "\n";
}

4.添加行或列

  • 添加一行:

    a.push_back(vector<int>(m, 1)); // 添加一行,m个1
  • 给第i行添加一个元素(相当于变成不规则的二维数组)

    a[i].push_back(7);

四、常见技巧

1.排序

sort(a.begin(), a.end());

2.初始化为-1(或其他)

vector<int> a(n, -1);

3.拷贝vector

vector<int> b = a;

4.用fill改变所有元素

fill(a.begin(), a.end(), 0);