Ошибка выполнения при использовании векторного итератора - PullRequest
0 голосов
/ 22 сентября 2011

У меня проблема со следующим кодом:

for(int j = 0; j < ensembleTemp.size(); j++)
        {
            ensemble[ensembleTemp[j]].clear();
            ensemble[ensembleTemp[j]].insert(ensemble[j].begin(),
                                     ensembleTemp.begin(), ensembleTemp.end());
        }   

ensembleTemp - это vector<int> и ансамбль это vector<vector<int>>. У меня есть следующее,

ошибка: итератор вставки вектора вне диапазона.

В чем моя ошибка?

Ответы [ 2 ]

3 голосов
/ 22 сентября 2011

Вы используете неправильный индекс для первого параметра вставки, он (предположительно) должен быть

for(int j = 0; j < ensembleTemp.size(); j++)
{
    ensemble[ensembleTemp[j]].clear();
    ensemble[ensembleTemp[j]].insert(
        ensemble[ensembleTemp[j]].begin(), 
        ensembleTemp.begin(), 
        ensembleTemp.end());
}

Первый параметр для вставки должен быть итератором для вставляемого вектора.

Кроме того, ensemble.size () должен быть больше, чем ensembleTemp [j] для всех j.

0 голосов
/ 22 сентября 2011

Вы уверены, что ensemble.size () больше, чем 'j'?и больше, чем ensembleTemp [j]?

...