2013-03-29 66 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