在 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 样式数组一样?
原文由 Adrian 发布,翻译遵循 CC BY-SA 4.0 许可协议
不,除非您将函数设为函数 _模板_(或使用另一种容器,如
std::vector
,如问题评论中所建议的那样),否则您真的不能这样做:这是一个 活生生的例子。