@Powerbute

Внесение данных в std::vector< GLfloat >?

Как мне внести данные в std::vector<GLfloat> по индексу, например 1?
В Java у меня реализовано так:
this.vertexBuffer.put(1, x);
Как мне сделать такое же на C++?
  • Вопрос задан
  • 98 просмотров
Решения вопроса 1
@MarkusD Куратор тега C++
все время мелю чепуху :)
Вектор перед работой с его индексами необходимо привести к требуемому размеру.
Делается это с помощью метода resize[?].
После этого можно обращаться к значению по индексу напрямую.

Если размер вектора уже определен и необходимо именно вставить данные по индексу, то воспользоваться можно методом insert[?].
Однако, первым параметром метод требует не индекс, а итератор внутри вектора, куда требуется выполнить вставку. Этот итератор можно получить через смещение итератора начала вектора на требуемый индекс.
vertexBuffer.insert( vertexBuffer.begin() + 1, x );

При этом важно контролировать чтобы индекс вставки не выходил за пределы размера вектора.
Забывать не стоит и о том, что при вставке велика вероятность реаллокации памяти под элементы вектора, в следствии чего уже все итераторы и ссылки на элементы вектора будут инвалидированы.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
includedlibrary
@includedlibrary
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы