1

私はC++の経験がほとんどまたはまったくないので、質問は奇妙に聞こえるかもしれません.問題は、float値を含むstd::vectorがあることです.float値を反復して抽出したい.

ベクトルの定義コードは次のようになります。

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」への実行可能な変換はありません

変換方法のヒントはありますか??

4

1 に答える 1

1

mfcc_features_aタイプは でFeaturesあり、これはs のavectorです。FeatureVector後者は のエイリアスですboost::array<T, feature_number>

boost::array<T, feature_number>つまり、 aを aに割り当てようとしていfloatます。ここで、テンプレート引数が (または浮動小数点数に変換可能なもの) であると仮定するTと、これは機能するはずですFeatureTypeDTWfloat

float MYFLOAT = mfcc_features_a[s][0];  // assigns first element of boost::array
                                        // to MYFLOAT
于 2013-03-29T06:28:38.310 に答える