OSX 10.7, XCode 4.push_back вопрос станд :: вектор
У меня есть небольшая проблема: мне нужно нажать назад 2D vector<vector<float>>
в к 3D Vector, после процесса отбора. Он выдает ошибку EXC_BAD_ACCESS в функции push_back в шаблоне stl :: vector. Кажется, что это должно быть просто (я много раз работал со сложными структурами данных), я пробовал разные идеи, но безуспешно. Все остальное работает и выводит значения, которые я ожидаю в командной строке. Я уверен, что его слепота кода, и некоторые легкие репутации подобрать.
Я прошу только потому, что считаю, что мой синтаксис верен, но во время компиляции у меня возникают проблемы. Heres некоторые примеры кода:
Реализация:
for(int i=0;i<fdisVec.size();i++){
int j;
if(fdisVec[i] < fdisVec2[i]){
j = 0;
}
else if(fdisVec2[i] < fdisVec[i]){
j = 1;
}
clusters[j].push_back(allMfccs[i]);
}
и мой .h имеет объекты, объявленные как таковые (открытые члены класса):
vector< vector <float> > allMfccs;
vector< vector < vector <float> > > clusters;
В случае помогает, fdisVec и fdisVec2 также являются 2d векторами, однако оператор «if else» отвечает, как я этого хочу, - я очень сомневаюсь, что это было бы чем-то связано с этим.
Если вы имеете дело с vecs vecs поплавков, вы можете захотеть использовать матричный тип, например boost :: numeric :: ublas :: matrix. Он имеет интерфейс STL. Попробуйте использовать .at() вместо [] и посмотреть, не возникло ли возникшее исключение. – 111111
Каковы размеры? У вас не хватит памяти? –
Если значения равны, 'j' не инициализируется. – hmjd