2017-01-30 2 views
-4

Я создал собственный класс для реализации std :: vector.
У моего класса есть поддержка итератора в прямом направлении. Я хотел бы знать, как я могу реализовать метод vector.insert, который позволяет мне вставлять элемент в любую позицию внутри вектора.
Я не могу использовать распределитель, но я хотел бы знать, можно ли использовать метод вставки с помощью итераторов и, если возможно, как это можно сделать?Как реализовать векторный метод vector.insert для моего пользовательского класса векторов?

+0

Что означает «пользовательский класс для реализации« std :: vector »? Вы не должны извлекаться из 'std :: vector'. –

+0

Это означает, что я создал класс, который выполняет те же действия, что и std :: vector. – user7337963

+1

Почему вы не используете 'std :: vector <>' вместо того, чтобы писать свой собственный? –

ответ

0

Чтобы реализовать insert, вам необходимо переместить/скопировать все элементы после точки вставки одного элемента (возможно, выделяя новую память и перемещая все элементы, если ваше внутреннее хранилище недостаточно велико), затем вставьте новый элемент в «отверстие», вы только что сделали.

Обратите внимание, что это (конечно) аннулирует существующие итераторы.

Смежные вопросы