Как работает метод insert в классе vector в с++?

Пользователь

от lamar , в категории: C/C++ , 8 месяцев назад

Как работает метод insert в классе vector в с++?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от johnpaul.blick , 8 месяцев назад

@lamar 

Метод insert() в классе vector в C++ используется для вставки элемента (или диапазона элементов) в указанную позицию вектора. Он имеет две основные формы:

  1. iterator insert (iterator position, const T& val)
  2. void insert (iterator position, size_type n, const T& val)
  3. template
  4. iterator insert (iterator position, T&& val)
  5. iterator insert (const_iterator position, T&& val)
  6. void insert (const_iterator position, size_type n, const T& val)
  7. template
  8. void insert (const_iterator position, initializer_list
  9. В первой форме, элемент со значением val вставляется перед элементом, на который указывает итератор position. Возвращает итератор на вставленный элемент.
  10. Во второй форме, n копий элемента со значением val вставляются перед элементом, на который указывает итератор position. Ничего не возвращает.
  11. В третьей форме, диапазон элементов, определенных итераторами first и last, вставляется перед элементом, на который указывает итератор position. Ничего не возвращает.


В остальных формах, действие аналогично первым трем формам, но они предназначены для rvalue-ссылок и const-итераторов.


Пример использования метода insert():

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include 
#include 

int main() {
    std::vector vec = {1, 2, 3, 4, 5};
    
    // Вставка элемента со значением 10 перед вторым элементом
    vec.insert(vec.begin() + 1, 10);
    
    // Вставка трех копий элемента со значением 7 перед последним элементом
    vec.insert(vec.end(), 3, 7);
    
    // Создание вектора с элементами [8, 9]
    std::vector vec2 = {8, 9};
    
    // Вставка элементов вектора vec2 перед первым элементом вектора vec
    vec.insert(vec.begin(), vec2.begin(), vec2.end());
    
    // Вывод элементов вектора
    for (const auto& elem : vec) {
        std::cout << elem << " ";
    }
    std::cout << std::endl;
    
    return 0;
}


Вывод:

1
8 9 1 10 2 3 4 5 7 7 7 


Это демонстрирует различные формы метода insert() и как они могут использоваться для вставки элементов в вектор.