怎么给vector<vector<int>>赋值,代码示例
时间: 2023-12-17 12:02:50 浏览: 140
给vector<vector<int>>赋值有多种方法,以下是两种常用的方法:
1. 使用resize()函数,可以指定vector的大小并初始化为0或其他值。示例代码如下:
vector<vector<int>> nums;
int m = 3, n = 4;
nums.resize(m, vector<int>(n, 0)); // 初始化为0
nums = 1; // 赋值
nums = 2;
2. 使用循环遍历vector,逐个赋值。示例代码如下:
vector<vector<int>> nums;
int m = 3, n = 4;
for (int i = 0; i < m; i++) {
vector<int> row;
for (int j = 0; j < n; j++) {
row.push_back(i * n + j); // 赋值
}
nums.push_back(row);
}
注意:以上代码仅为示例,实际使用时需要根据具体情况进行修改。
相关问题
std::vector<std::vector<int>>的拷贝赋值
`std::vector<std::vector<int>>` 是一个二维动态数组,它存储的是 `int` 类型的一维向量。在 C++ 中,当你想要拷贝这种嵌套容器时,有两种基本的方式:
1. **浅拷贝(Shallow Copy)**:
如果只是逐个复制外层容器(即二维向量)的引用到新的 `std::vector`,而不复制内部元素(即一维向量及其内容),那么这是浅拷贝。例如:
```cpp
std::vector<std::vector<int>> outer_copy(outer_vec);
```
这里的 `outer_copy` 将拥有与 `outer_vec` 相同数量的一维向量引用,但每个一维向量的内容仍然是原始向量的内容。
2. **深拷贝(Deep Copy)**:
如果你需要完全复制整个结构,包括内部的每一维向量及其内容,你可以使用深拷贝构造函数或者内建的 `copy` 函数配合 `std::copy`:
```cpp
std::vector<std::vector<int>> outer_deep_copy;
outer_deep_copy.resize(outer_vec.size());
for (size_t i = 0; i < outer_vec.size(); ++i) {
outer_deep_copy[i] = outer_vec[i]; // 或者 std::copy(outer_vec[i].begin(), outer_vec[i].end(), outer_deep_copy[i].begin());
}
```
这样,`outer_deep_copy` 就会包含独立于 `outer_vec` 的全新一维向量。
无论哪种情况,注意处理好内存,尤其是当内部向量很大或者有复杂的数据结构时,深拷贝可能会占用较多资源。
怎么给vector<vector<int>>赋值
给`vector<vector<int>>`赋值有多种方法,以下是其中两种常见的方法:
方法一:
```
vector<vector<int>> nums(m, vector<int>(n));
```
这种方法会创建一个大小为`m*n`的二维vector,并将所有元素初始化为0。
方法二:
```
vector<vector<int>> nums;
nums.resize(m, vector<int>(n));
```
这种方法也会创建一个大小为`m*n`的二维vector,并将所有元素初始化为0。
除了以上两种方法,还可以使用循环或者其他STL算法来给`vector<vector<int>>`赋值。
阅读全文