c++中vector<vector<int>>怎么传参?
时间: 2024-09-24 13:15:28 浏览: 45
在 C++ 中,`std::vector<std::vector<int>>` 表示二维动态数组,用于存储整数的矩阵。如果你想将这样的二维向量作为参数传递给函数,你可以按照以下几种方式进行:
1. **按值传递** (Copy): 如果不需要修改原数据,可以复制整个向量结构传递:
```cpp
void processMatrix(std::vector<std::vector<int>> matrix) {
// 函数内部对matrix操作...
}
```
2. **按引用传递** (Reference): 如果需要在函数内修改原矩阵,应使用引用避免深拷贝:
```cpp
void updateMatrix(std::vector<std::vector<int>>& matrix) {
// 函数内部可以直接修改matrix
matrix[0][0] = 42; // 示例
}
```
这里需要注意的是,如果`matrix`很大,按引用传递会更高效。
3. **指针传递** (Pointer): 使用指向二维向量的指针同样可以访问元素并修改,但底层机制类似引用:
```cpp
void manipulateMatrix(std::vector<std::vector<int>>* matrix) {
(*matrix)[0][0] = 42;
}
```
记得在函数结束后释放内存,防止内存泄漏。
相关问题
vector<vector<pair<int,int>>>
This is a vector of vectors, where each element of the outer vector is a vector of pairs of integers.
For example,
```c++
vector<vector<pair<int,int>>> v;
```
creates an empty vector of vectors. To add a vector of pairs to this, we can do:
```c++
vector<pair<int,int>> inner; // create an inner vector
inner.push_back(make_pair(1,2)); // add a pair to the inner vector
inner.push_back(make_pair(3,4)); // add another pair to the inner vector
v.push_back(inner); // add the inner vector to the outer vector
```
Now, `v` contains one vector of pairs:
```
v = [
[(1,2), (3,4)]
]
```
We can add more vectors of pairs to `v` in a similar way.
This data structure is useful for storing a collection of pairs where each pair belongs to a different group or category. For example, if we are storing the grades of students in a class, we can have a vector for each subject and each vector contains pairs of (student_id, grade).
C++ vector<pair<int, int>>
C++中的`vector`是一个动态数组,可以存储一组同类型的数据。而`pair`是一种结构体模板,可以将两个不同类型的值组合在一起。
因此,`vector<pair<int, int>>`就是一个存储了一组`pair`结构体的动态数组,其中每个`pair`结构体包含两个`int`类型的值。可以使用以下代码来创建一个`vector<pair<int, int>>`类型的变量:
```cpp
#include <vector>
#include <utility>
std::vector<std::pair<int, int>> myVec;
```
可以使用`push_back`函数向`vector`中添加新元素:
```cpp
myVec.push_back(std::make_pair(1, 2));
```
这将在`myVec`中添加一个新元素,其值为`pair<int, int>(1, 2)`。可以使用下标运算符或迭代器来访问`vector`中的元素:
```cpp
std::cout << myVec[0].first << " " << myVec[0].second << std::endl; // 输出 1 2
```
阅读全文