Как добавить 3 единицы на следующий элемент?

Рейтинг: 2Ответов: 1Опубликовано: 07.10.2014
for(int number=0;number<=5;number++)
{
    v1.push_back(number);
}

v1[5]=2;
    vector <int>::iterator pCursor = v1.begin();

    for(int i = 0; i < v1.size(); i++)
    {
        cout << v1[i] << " ";
    }

    cout<<endl;
    if(*(v1.end() - 1) == 2)
    {
        for(pCursor = v1.begin(); pCursor < v1.end() ; pCursor++)
        {
            cout<< *pCursor<< " ";
            if(*pCursor % 3 == 0)
            { 
                pCursor = v1.insert(pCursor+1, 3, 1);
            }
        }
        cout<<"on delitsa na 2";
    }

Пробую вот так

pCursor = v1.insert(pCursor+1, 3, 1);

Но получаю непонятную ошибку

37 13[Error] no match for 'operator=' (operand types are 'std::vector<int>::iterator {aka gnu_cxx::normal_iterator<int*, std::vector<int> >}' and 'void')

Ответы

▲ 1Принят

Если вектор в самом начале пустой, то строкой

   v1[5] = 2;

Вы уже приехали, то есть вышли за пределы вектора и дальше может быть все что угодно. Но оно не компилируется по той причине, что метод insert возвращает void в данном случае.