gpt4 book ai didi

C++ 将数组转换为可变大小的 vector

转载 作者:行者123 更新时间:2023-11-28 07:33:33 26 4
gpt4 key购买 nike

我想知道是否有将数组转换为可变大小 vector 的简单解决方案。

double CApp::GetTargetCost(const vector<unsigned char> &uHalfphoneFeatureVector_Bytes,const vector<unsigned char> &uTargetFeatureVector_Bytes)

我想通过

struct udtByteFeatures
{
unsigned char Values[52];
};

这个函数,但 C++ 不喜欢它具有固定大小的事实。它需要一个可变大小的 vector 。

我得到的错误是

error C2664: 'CApp::GetTargetCost': Conversion of parameter 1 from 'unsigned char [52]' to 'const std::vector<_Ty> &' not possible

我还不确定以后是否会使用固定尺寸,但目前我只是想保持灵 active 。

谢谢!

最佳答案

从数组到 std::vector 的转换只有在您知道数组的大小时才有可能。请注意,只有在编译时数组的大小已知时,sizeof 才有效,至少如果您不知道 use C99 ,所以你不能把它放在一个函数中。也就是说,这是行不通的:

template <typename T>
inline std::vector<T> ArrayToVec(const T* in) {
return std::vector<T> (in, in + sizeof(in) / sizeof(T) );
}

因为在这种情况下 sizeof(in) 将返回指针的大小。

1) 推荐方式:调用函数时将数组转换为 std::vector:

std::vector<unsigned char> (Value, Value + <number of elements in Value>)

我建议您输入一些适当的常量,也许是 udtByteFeatures 的一部分。顺便说一句,定义从 udtByteFeatures 到 std::vector 的转换是可能的。

来源: What is the simplest way to convert array to vector?

2) 困难且危险的方法:使用宏转换数组:

#define CharArrayToVec(in) (std::vector<char> (in, in + sizeof(in) / sizeof(*in) ) )

(太糟糕了,它不能在类型上进行模板化:))

编辑:

(too bad it cannot be templated on the type :) )

实际上,您可以将类型作为参数传递。如果有 typeof 运算符,您甚至不需要它。

关于C++ 将数组转换为可变大小的 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17183954/

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