insert

Материал из cppreference.com
Перейти к: навигация, поиск

Синтаксис:

    #include <vector>
    iterator insert( iterator loc, const T& val );
    void insert( iterator loc, size_type num, const T& val );
    void insert( iterator loc, input_iterator start, input_iterator end );

Метод insert:

  • вставляет val паред loc, возвращая итератор на вставленный элемент,
  • вставляет num копий переменной val перед loc, или
  • вставляет элементы начиная со start и заканчивая end перед loc.

Вставка элементов в вектор может быть довольно затратна по времени, так как внутри вектор представляет собой массив. Чтобы вставить данные в массив, может потребоваться переместить множество элементов этого массива, а это может занять линейное время. Если вы собираетесь производить множество вставок в вектор и вы заботитесь о скорости программы, возможно, лучше будет использовать контейнер с однонаправленным списком в качестве внутренней структуры данных (контейнер list или deque).

Код в нижеследующем примере использует функцию insert(), чтобы разместить четыре копии символа 'C' в векторе символов:

   // Создаем вектор, заполняем его первыми 10 символами алфавита
   vector<char> alphaVector;
   for( int i=0; i < 10; i++ ) {
     alphaVector.push_back( i + 'A' );
   }
 
   // вставляем четыре символа C в вектор
   vector<char>::iterator theIterator = alphaVector.begin();
   alphaVector.insert( theIterator, 4, 'C' );
 
   // Выводим на экран
   for( theIterator = alphaVector.begin(); theIterator != alphaVector.end(); ++theIterator )    {
     cout << *theIterator;
   }

Этот код выведет:

   CCCCABCDEFGHIJ

Во втором примере insert добавляет содержимое одного вектора в конец другого:

    vector<int> v1;
    v1.push_back( 0 );
    v1.push_back( 1 );
    v1.push_back( 2 );
    v1.push_back( 3 );
 
    vector<int> v2;
    v2.push_back( 5 );
    v2.push_back( 6 );
    v2.push_back( 7 );
    v2.push_back( 8 );
 
    cout << "До, v2 is: ";
    for( int i = 0; i < v2.size(); i++ ) {
      cout << v2[i] << " ";
    }
    cout << endl;
 
    v2.insert( v2.end(), v1.begin(), v1.end() );
 
    cout << "После, v2 is: ";
    for( int i = 0; i < v2.size(); i++ ) {
      cout << v2[i] << " ";
    }
    cout << endl;

После запуска код выводит:

    До, v2 is: 5 6 7 8
    После, v2 is: 5 6 7 8 0 1 2 3

Смотри также: assign, erase, push_back

Личные инструменты
Пространства имён
Варианты
Действия
Навигация
Инструменты
На других языках