Существует проблема где-то в этой функции, к сожалению компилятор не говорит, где. Программа просто перестает работать, и ее нужно отключить.
Я начинаю в c++, поэтому я маз сделал что-то глупое, но я не знаю, что.
Я буду благодарен за любую помощь.
vector< vector<string> >gsiread16::make_section(vector<string> blocks) {
string code;
string code2;
vector<string> section;
vector< vector<string> > sections;
for ( int i = 0; i < blocks.size(); i++) {
code = blocks[ i ].substr(0,3);
if( code == "*41" ) {
code2 = blocks[ i+1 ].substr(0,3);
if( code2 != "*11" ) continue;
int index = i +1;
while(code2 == "*11" ) {
section.push_back( blocks[ index ] );
index++;
}
sections.push_back(section);
section.clear();
i = index - 1;
} else continue;
}
return sections;
}
Вне связанного индексации, где 0 <= я < size
:
blocks [i+1]
i+1
превышает допустимый индекс, где i=blocks.size()-1
.
Более того, этот цикл никогда не заканчивается:
while(code2 == "*11" ) {
section.push_back( blocks[ index ] );
index++;
}
> while(code2 == "*11" ) {
> section.push_back( blocks[ index ] );
> index++; }
который никогда не может быть передан...
i = index - 1;
может закончиться бесконечной петлей
code2
никогда не меняется внутри цикла ...
За пределами достигнуты, когда я = blocks.size() -1 для: code2 = blocks [i + 1].substr(0,3);
Также это бесконечный цикл: while (code2 == "* 11") {
section.push_back( blocks[ index ] );
index++; }