c++vector数组怎么传入函数
时间: 2024-12-11 17:06:20 浏览: 11
在 C++ 中,`std::vector` 是一种动态数组,可以方便地管理不同大小的数据序列。当你需要将 `vector` 作为参数传递给函数时,有几种常见的方法:
1. **传值拷贝**(Pass by value):
```cpp
void function(std::vector<int> vec) {
// 函数内的修改不会影响原始 vector
vec.push_back(5);
}
int main() {
std::vector<int> myVector;
function(myVector); // 调用函数
// myVector 未变
return 0;
}
```
在这种情况下,函数会收到一个副本,对副本的操作不影响原始 `vector`。
2. **传引用或迭代器**(Pass by reference or iterator):
```cpp
void function(const std::vector<int>& vec) { // Pass by const reference
vec.push_back(5);
}
// 或者
void function(std::vector<int>::iterator it) {
*it = 5; // 直接修改原向量中的元素
}
int main() {
std::vector<int> myVector;
function(myVector.begin()); // 传递 begin() 迭代器
// myVector 改变了
return 0;
}
```
这种方式下,函数可以直接访问或修改原始 `vector` 的内容。
3. **模板参数**(Template argument deduction):
如果你的函数模板接受一个容器类型的参数,编译器可以根据实参自动推导容器类型:
```cpp
template <typename Container>
void process(Container& container) {
container.push_back(5);
}
int main() {
std::vector<int> myVector;
process(myVector); // 不需要指定类型
return 0;
}
```
选择哪种方式取决于你希望函数是否能修改原始 `vector`、是否关心效率以及代码的可读性和通用性。
阅读全文