我对 C++ 的经验很少或没有,所以这个问题听起来很奇怪,问题是我有一个包含浮点值的 std::vector,我想通过迭代从中提取浮点值。
vector 的定义代码如下:
template <typename T, size_t feature_number>
T vector_distance(const boost::array<T, feature_number>& v1,
const boost::array<T, feature_number>& v2);
template <typename T = double, size_t feature_number=3>
class CLASSNAME
{
public:
typedef boost::array<T, feature_number> FeatureVector;
typedef std::vector<FeatureVector> Features;
...
我正在按以下方式使用它:
FeatureTypeDTW::Features mfcc_features_a = METHODTHATRETURNSVECTOR();
for (int s = 0; s < (int) mfcc_features_a.size(); s++)
{
float MYFLOAT = mfcc_features_a[s];
}
但是我得到的编译错误是:
No viable conversion from 'boost::array (float, 7)' to 'float'
关于如何转换的任何提示??
最佳答案
mfcc_features_a
类型为 Features
,这是一个 vector
的 FeatureVector
;后者又是 boost::array<T, feature_number>
的别名.
简而言之,您正在尝试分配 boost::array<T, feature_number>
到 float
.现在,假设模板参数 T
对于 FeatureTypeDTW
是 float
(或可转换为 float 的东西)这应该有效。
float MYFLOAT = mfcc_features_a[s][0]; // assigns first element of boost::array
// to MYFLOAT
关于c++ - 从 vector 中获取浮点值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15698395/