c++ 函数传递时,如何处理vector<int>
时间: 2024-10-27 20:03:53 浏览: 40
在C++中,当你需要将`vector<int>`作为参数传递给函数时,有几种常见的处理方式:
1. **值传递**(Pass by Value):
如果你只是想把`vector<int>`作为一个副本传递,可以像处理其他基本数据类型一样,直接传递。函数内的修改不会影响到原变量。
```cpp
void function(vector<int>& vec) {
// 在这里对vec操作...
}
int main() {
vector<int> myVec = {1, 2, 3};
function(myVec);
// myVec仍然是{1, 2, 3},因为myVec是个副本
}
```
2. **引用传递**(Pass by Reference):
如果你想让函数能够直接访问并修改原始向量,你应该传入引用(&)。这样函数内部的操作会对原始`vector`产生影响。
```cpp
void function(vector<int>&& vec) { // C++11开始支持Rvalue引用
// 在这里可以直接修改vec
vec.push_back(4);
}
int main() {
vector<int> myVec = {1, 2, 3};
function(myVec); // 现在myVec变为{1, 2, 3, 4}
}
```
3. **指针传递**(Pass by Pointer):
也可以通过指向vector的指针传递,但这相对少用,因为C++已经提供了更方便的引用语法。不过,在某些特定场景下(如大量数据、避免拷贝),可能考虑使用智能指针(如unique_ptr)。
```cpp
void function(vector<int>* vec) {
// 使用*vec访问元素
(*vec).push_back(4);
}
int main() {
vector<int> myVec = {1, 2, 3};
function(&myVec); // 注意,这里是地址(&)
}
```
阅读全文