У меня мало или совсем нет опыта работы с 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’
Любые советы о том, как конвертировать ??
mfcc_features_a
имеет тип Features
, который является vector
из FeatureVector
s; последний в свою очередь является псевдонимом для 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
Других решений пока нет …