【发布时间】:2011-04-24 06:17:54
【问题描述】:
我正在编写一个 C++ 函数,该函数接受一个 string、一个 array 和 size大批。它看起来像这样:
bool funcname (string skey, string sArr[], int arrSz)
我要传递几个数组数据类型,如double、char、long int等,使用string作为数组的数据类型对吗?或者有没有我可以使用的通用数据类型?
提前致谢。
【问题讨论】:
我正在编写一个 C++ 函数,该函数接受一个 string、一个 array 和 size大批。它看起来像这样:
bool funcname (string skey, string sArr[], int arrSz)
我要传递几个数组数据类型,如double、char、long int等,使用string作为数组的数据类型对吗?或者有没有我可以使用的通用数据类型?
提前致谢。
【问题讨论】:
以这种方式使用字符串是不好的 imo。除其他外,您正在发送一个字符串数组。最好使用 std::vector。然后,您可以按如下方式对函数进行模板化:
template< typename T >
bool
funcname (const std::string& skey, const std::vector< T >& arr )
这样您可以直接查询向量的大小,并且可以传递任何数据类型的向量。
还请记住,将结构作为 const 引用而不是具有结构的“潜在”副本发送效率要高得多。
【讨论】:
double dArr[10] = { //values }; funcname("randstring", dArr, 10); 也:int iArr[5] = { //values }; funcname("somerandstring", iArr, 5);
如果你想要数组本身
template <typename T>
bool funcname (T key, T Arr[], int arrSz)
{
//T is the type of array you'll pass
}
也可以在谷歌上搜索功能模板。高温
【讨论】: