怎么在vector<vector<int>>后面加数组
时间: 2023-10-22 21:19:21 浏览: 87
要在vector<vector<int>>后面加数组,可以使用push_back()函数。假设要加的数组为arr,代码如下:
```
vector<vector<int>> vec;
vector<int> arr = {1, 2, 3};
vec.push_back(arr);
```
这样,vec就成为了一个二维向量,其中包含一个一维向量{1, 2, 3}。如果要加入多个数组,可以依次调用push_back()函数。例如:
```
vector<int> arr2 = {4, 5, 6};
vector<int> arr3 = {7, 8, 9};
vec.push_back(arr2);
vec.push_back(arr3);
```
这样就得到了一个包含三个一维向量的二维向量。
相关问题
二维vector<vector<pair<int,int>>>
二维 vector<vector<pair<int,int>>> 表示了一个二维数组,其中每个元素是一个 vector,而每个 vector 中的元素是一个 pair,pair 中存储了两个 int 类型的值。
这种数据结构通常用于表示稀疏矩阵,其中第一维表示行,第二维表示列,每个元素是一个非零的值和它的列坐标。例如,下面是一个 3x4 的稀疏矩阵:
```
0 0 0 0
0 0 2 0
0 3 0 0
```
可以用以下代码来表示:
```cpp
vector<vector<pair<int,int>>> mat(3);
mat[1].push_back({2, 2});
mat[2].push_back({3, 1});
```
其中 mat[1][0] 表示第 2 行第 3 列的值为 2,mat[2][0] 表示第 3 行第 2 列的值为 3。其它位置都是 0,可以省略不存储。
vector<vector<long long int>> dp(n, vector<int>(2, 0))为什么不对
在这个表达式中,`vector<vector<long long int>> dp(n, vector<int>(2, 0))`看起来像是在初始化一个二维动态数组`dp`,其中每个元素都是一个长度为2的一维长整型向量,并且所有初始值都设置为`(0, 0)`。但是这里存在两个潜在的问题:
1. **类型不匹配**:`vector<int>(2, 0)`是一个包含两个`int`类型的向量,而`dp`期望的是一个包含`long long int`的向量。当你尝试将`int`类型的向量赋给`dp`的元素时,可能会导致数据溢出或类型错误。
2. **大小不符**:如果你想要创建一个n * 2的二维向量,应该传入一个表示行数`n`的参数,而不是另一个向量。这意味着`n`应该是单独的一个数值,而不是一个已经预先定义好的二维向量。
正确的做法可能是这样的:
```cpp
vector<vector<long long int>> dp(n, vector<long long int>(2, 0));
```
或者更明确地指定初始值:
```cpp
vector<vector<long long int>> dp(n, {0, 0});
```
阅读全文