gpt4 book ai didi

c++ - 将未知大小的 std::array 传递给函数

转载 作者:IT老高 更新时间:2023-10-28 12:05:23 26 4
gpt4 key购买 nike

在 C++11 中,我将如何编写一个函数(或方法),该函数(或方法)采用已知类型但大小未知的 std::array?

// made up example
void mulArray(std::array<int, ?>& arr, const int multiplier) {
for(auto& e : arr) {
e *= multiplier;
}
}

// lets imagine these being full of numbers
std::array<int, 17> arr1;
std::array<int, 6> arr2;
std::array<int, 95> arr3;

mulArray(arr1, 3);
mulArray(arr2, 5);
mulArray(arr3, 2);

在我的搜索过程中,我只找到了使用模板的建议,但这些建议看起来很困惑(标题中的方法定义)并且对于我想要完成的任务来说太过分了。

有没有一种简单的方法来完成这项工作,就像使用普通的 C 样式数组一样?

最佳答案

Is there a simple way to make this work, as one would with plain C-style arrays?

没有。你真的不能这样做,除非你让你的函数成为一个函数 template (或使用另一种容器,如 std::vector,正如问题评论中所建议的那样):

template<std::size_t SIZE>
void mulArray(std::array<int, SIZE>& arr, const int multiplier) {
for(auto& e : arr) {
e *= multiplier;
}
}

这里是 live example .

关于c++ - 将未知大小的 std::array 传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17156282/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com