Я потерян: итератор вектора из std :: string работает отлично, если только перед ним нет вызова функции (Z_UB-> set ()) ++. Вот код:
std::vector< std::string >::iterator it = g_SPP.scenarios->getVector().begin();
std::cout << "begin of vector: " << *it << std::endl;
Z_UB->set("s1", "scn2", 350);
it++;
std::cout << "second of vector: " << *it << std::endl;
создает следующий вывод
begin of vector: scn1
Однако, если я переместу вызов функции так:
std::vector< std::string >::iterator it = g_SPP.scenarios->getVector().begin();
std::cout << "begin of vector: " << *it << std::endl;
it++;
std::cout << "second of vector: " << *it << std::endl;
Z_UB->set("s1", "scn2", 350);
Результатом является следующее ожидаемое поведение:
begin of vector: scn1
second of vector: scn2
Внутри функции Z_UB-> set () ничего не осталось, кроме самого вызова:
void Parameter::set( std::string _i, std::string _j, float value) {
//int i = indexSets[0]->backIndex(_i);
//int j = indexSets[1]->backIndex(_j);
//data2D[0][0] = value;
}
Так что, если я вызову функцию Z_UB-> set () после того, как я создал итератор, доступ к нему приведет к сбою программы. Что-то жизненно важное, что я пропустил в Итераторах?