Ошибка при склейке вектора C++

Я пытаюсь соединить вектор на С++, используя следующий код:

sequence(sequence.begin() + i, sequence.end());

где sequence — вектор, содержащий целые числа, а i — целое число, но когда я запускаю свой код, он выдает следующую ошибку:

error: no match for call to ‘(std::vector<int>) (__gnu_cxx::__normal_iterator<int*, std::vector<int> >, std::vector<int>::iterator)’ sequence(sequence.begin() + i, sequence.end()); ^

Я не понимаю, что не так с моим кодом. Я использовал следующие вопросы о переполнении стека, чтобы помочь написать этот код:

Создание нового подвектора C++?

Разрез вектора


person Rory Danes    schedule 09.02.2018    source источник
comment
Могу я предложить вам прочитать хорошую книгу?   -  person Rakete1111    schedule 09.02.2018


Ответы (1)


Вы не можете этого сделать, потому что sequence не имеет перегруженного оператора вызова. Вы можете использовать этот синтаксис только при инициализации объектов, когда вы их определяете:

int i(1); // ok
i(2); // nope!

Вы пытаетесь выполнить вторую строку выше, что не удается, потому что это недопустимая форма инициализации в этом контексте. Если вы хотите объединить вектор, вы можете использовать std::vector::erase;

sequence.erase(sequence.begin() + i, sequence.end()); // erases [start, end)
person Rakete1111    schedule 09.02.2018