在C++中如何传递数组的所有元素而不只是地址?
时间: 2024-09-30 13:05:46 浏览: 26
在C++中,如果你想要在函数内部操作整个数组并希望改变传入的数组,可以使用`std::array`或`const std::vector`。这两个容器会复制整个数组的数据,因此在函数内部操作它们会影响到实际的传入数组。以下是例子:
对于`std::array`:
```cpp
#include <array>
void processArray(const std::array<int, 5>& arr) {
for (auto& elem : arr) {
elem += 1; // 这里操作arr会改变传入的数组
}
}
int main() {
std::array<int, 5> myArray = {1, 2, 3, 4, 5};
processArray(myArray);
// 输出:myArray现在是{2, 3, 4, 5, 6}
}
```
对于`const std::vector`(注意`const`关键字,表示不会修改容器,但可以读取元素):
```cpp
#include <vector>
void processArray(const std::vector<int>& arr) {
for (const auto& elem : arr) {
elem++; // 由于`const`,这里不会修改元素,只允许读取
}
}
int main() {
std::vector<int> myVector(5, 1);
processArray(myVector);
// 输出:myVector仍然是[1, 2, 3, 4, 5]
}
```
如果你想在函数中真正地“复制”整个数组,可以考虑使用`std::copy`等库函数来复制数据到一个新的临时容器,然后在这个新容器上操作。
阅读全文