我对C ++几乎没有经验,所以问题可能听起来很奇怪,问题是我有一个包含浮点值的std :: 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];
}
但我得到的编译错误是:
没有可行的'boost :: array(float,7)'转换为'float'
有关如何转换的任何提示??
答案 0 :(得分:1)
mfcc_features_a
属于Features
类型,vector
为FeatureVector
个;后者又是boost::array<T, feature_number>
的别名。
简而言之,您尝试将boost::array<T, feature_number>
分配给float
。现在,假设T
的模板参数FeatureTypeDTW
是float
(或者可以转换为浮点数的东西),这应该可行。
float MYFLOAT = mfcc_features_a[s][0]; // assigns first element of boost::array
// to MYFLOAT