vector <vector <int>> frameVecs(4);
vector <int> t1 = getPeaks (vec1);
vector <int> t2 = getPeaks (vec2);
vector <int> t3 = getPeaks (vec3);
vector <int> t4 = getPeaks (vec4);
frameVecs[0].reserve(t1.size());
frameVecs[1].reserve(t2.size());
frameVecs[2].reserve(t3.size());
frameVecs[3].reserve(t4.size());
frameVecs.push_back (t1);
frameVecs.push_back (t2);
frameVecs.push_back (t3);
frameVecs.push_back (t4);
Я всегда получаю ошибку subscript out of range
во время отклика части фрагмента.Ошибка при использовании 2d векторов в C++
Всего два дня назад я был с этим кодом, который делает то же самое:
vector <vector <int>> frameVecs;
frameVecs.push_back (getPeaks (vec1));
frameVecs.push_back (getPeaks (vec2));
frameVecs.push_back (getPeaks (vec3));
frameVecs.push_back (getPeaks (vec4));
И это работает просто отлично в течение последних 2-х месяцев .. и вдруг я начал получать subscript out of range
ошибку в PushBack части и, следовательно, мне пришлось изменить эту конкретную часть на ту, что была над ней, и все же я получаю эту ошибку.
Я имею в виду, что vectors
настолько неопределенны в своем поведении?
PS: getPeaks() возвращает int
вектор!
Я попытался воспроизвести проблему с предоставленным кодом, но ничего плохого не происходит. Если рассматриваемый код не изменился, когда проблема впервые возникла, это может быть проблема многопоточности. Что вы пытаетесь выполнить с печатью 'endl' после каждого' push_back'? – Excelcius
, пожалуйста, предоставьте [SSCE] (http://sscce.org/) – TemplateRex
Боясь, что это ваше понимание, которое является неопределенным. Из-за этого вы делаете его более сложным, чем это должно быть. – john