std::vector<std::vector<int>> &G, std::vector<int> &visit是什么意思
时间: 2025-05-03 07:19:32 浏览: 25
### C++ 中嵌套向量和引用参数的意义
#### 嵌套向量 `std::vector<std::vector<int>>`
`std::vector<std::vector<int>>` 是一种二维动态数组结构,在许多应用场景中非常有用。这种类型的变量通常用于表示矩阵或多维表格数据。
- **灵活性**:与固定大小的多维数组相比,嵌套向量允许每一行有不同的长度[^1]。
- **内存管理**:内部自动处理分配和释放存储空间的工作,减少了程序员手动管理资源的风险。
下面是一个简单的例子来展示如何初始化并访问这样的嵌套向量:
```cpp
#include <iostream>
#include <vector>
int main() {
// 创建一个包含三个子向量的外层向量
std::vector<std::vector<int>> matrix(3);
// 给每个子向量赋初值
matrix[0].push_back(1); matrix[0].push_back(2);
matrix[1].push_back(3); matrix[1].push_back(4); matrix[1].push_back(5);
matrix[2].push_back(6);
// 输出整个matrix的内容
for(size_t i = 0; i < matrix.size(); ++i){
for(auto j : matrix[i]){
std::cout << j << ' ';
}
std::cout << '\n';
}
return 0;
}
```
这段代码创建了一个不规则形状的整数列表集合,并打印出来。
#### 引用参数 `&G`, `&visit`
当函数接受带有引用符号 (`&`) 的参数时,这意味着该参数是以引用方式传递给函数而不是复制一份副本。这有以下几个优点:
- **性能提升**:对于大型对象而言,传入引用可以避免不必要的拷贝开销,从而提高效率。
- **修改原始数据的能力**:通过引用可以直接改变调用方所提供的实际参数值;如果不需要此功能,则应考虑使用常量引用来保护原数据不变性。
这里有一个简单示例说明了这一点:
```cpp
void modifyVectors(std::vector<std::vector<int>>& G, std::vector<int>& visit) {
// 修改第一个元素的第一个成员
if (!G.empty() && !G.front().empty()) {
G.front()[0]++;
}
// 向visit添加新元素
visit.push_back(99);
}
// 调用modifyVectors之后,G和visit都会被更改.
```
上述代码片段展示了如何定义以及调用接收两个引用作为输入参数的方法。注意这里的任何改动都将反映到外部作用域内的相应变量上。
阅读全文
相关推荐



















