2013-03-29 68 views
1

我在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_aFeatures类型,它是FeatureVector s的vector;后者又是boost::array<T, feature_number>的别名。

总之,您试图将boost::array<T, feature_number>分配给float。现在,假设模板参数T对于FeatureTypeDTWfloat(或者可转换为浮点数的东西),这应该起作用。

float MYFLOAT = mfcc_features_a[s][0]; // assigns first element of boost::array 
             // to MYFLOAT 
+0

第二个元素是什么?对我有用吗?我的意思是,如果它是一个二维向量,那么我应该考虑它 – Firdous

+0

@Firdous我怎么会知道这一点?从错误消息看,它看起来像数组包含7个元素。他/她们中的任何一个都可能对你不利,这是你自己决定的。 – Praetorian

+0

正确的告诉我,每个mfcc_features_a [index]在其他维度将包含1个值或7个值?它是一个2D数组吗?没有向量的知识:) – Firdous