c++ - 如何将数组对象(Class Template c++)作为参数传递给函数?

标签 c++ arrays

如果我像这样声明一个数组(使用 C++ 类模板),

#include <array> //standard c++ library
 int main()
{
 array<int,3> myarray{10,20,30}; 
}

我怎样才能将这个数组对象作为参数发送给函数。

如果我这样通过,它会起作用:

void f_print(array<int, 3> object){}
int main()
{
 array<int, 3> myarray{10,20,30};
 f_print(myarray);
}

但这里的问题是我在函数中对大小进行硬编码。像这样使用数组作为对象类型的全部意义在于我可以使用 array.size()。 那么如何在不对大小进行硬编码的情况下传递此数组类型对象(C++ 类模板)。

Edit_1:为什么我不能将数组对象仅作为一个对象发送,我在函数参数中使用该对象的所有属性。

最佳答案

您可以模板化数组类型

template<typename T>
void f_print(std::array<T, 3> const& object);

或者大小

template<size_t S>
void f_print(std::array<int, S> const& object);

或两者兼而有之:

template<typename T, size_t S>
void f_print(std::array<T, S> const& object);

编译器应该能够在所有情况下推断出正确的模板参数。

关于c++ - 如何将数组对象(Class Template c++)作为参数传递给函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40491112/

相关文章:

c++覆盖文件数据?

c++ - 我刚刚使用 IwNUI 启动了最基本的 Marmalade c++ 应用程序,但它出现了错误。这条消息是什么意思?

c++ - http 隧道入门

java - 如何修复此数组越界异常

c++ - 谁能解释一下这个特定的 print 语句在 for 循环中做了什么?

c - 我无法删除字符串中的空格

objective-c - 帮助加载大量数据

Java:将字符串中的所有字符代码移动一个常量值

c++ - vector 订阅超出范围

c++ - 当 Matlab 中仅接受 Int32Ptr 时,以字符串形式返回错误号