在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样式数组那样进行这项工作?
有没有一种简单的方法可以像使用普通C样式数组那样进行这项工作?
否。除非您将函数设为函数模板(或使用其他类型的容器,如std::vector
问题注释中建议的),否则您实际上无法做到这一点:
template<std::size_t SIZE>
void mulArray(std::array<int, SIZE>& arr, const int multiplier) {
for(auto& e : arr) {
e *= multiplier;
}
}
这是一个生动的例子。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句