Шаг 7.
Библиотека STL.
Вставка и удаление элементов из вектора

    На этом шаге мы рассмотрим изменение содержимого вектора.

    В данной программе демонстрируется использование функций insert() и erase().

//---------------------------------------------------------------------------

#include <vcl.h>
#include <iostream>
#include <vector>
#include <winuser.h>
#include <conio.h> //необходимо для getch()
#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused
using namespace std;
std::string ToRus(const std::string &in)
{
  char *buff = new char [in.length()+1];
  CharToOem(in.c_str(),buff);
  std::string out(buff);
  delete [] buff;
  return out;
}

int main(int argc, char* argv[])
{
  vector<char> v;
  unsigned int i;

  for (i=0; i<10; i++) v.push_back('A' + i);

  // Отображаем исходное содержимое вектора.
  cout << ToRus("Размер = ") << v.size() << endl;
  cout << ToRus("Исходное содержимое вектора:\n");
  for (i=0; i<v.size(); i++) cout << v[i] << " ";
  cout << endl << endl;
  vector<char>::iterator p = v.begin();
  p += 2; // указатель на 3-й элемент вектора
  // Вставляем 10 символов 'X' в вектор v.
  v.insert(p, 10, 'X');

  // Отображаем содержимое вектора после вставки символов
  cout << ToRus("Размер вектора после вставки = ") << v.size() << endl;

  cout << ToRus("Содержимое вектора после вставки:\n");
  for (i=0; i<v.size(); i++) cout << v[i] << " ";
  cout << endl << endl;

  // Удаление вставленных элементов.
  p = v.begin();
  p += 2; // указатель на 3-й элемент вектора
  v.erase(p, p+10); // Удаляем 10 элементов подряд.

  // Отображаем содержимое вектора после удаления символов.
  cout << ToRus("Размер вектора после удаления символов = ") << v.size() << endl;
  cout << ToRus("Содержимое вектора после удаления символов:\n");
  for (i=0; i<v.size(); i++) cout << v[i] << " ";
  cout << endl;
  getch();
  return 0;
}
//---------------------------------------------------------------------------
Текст этого примера можно взять здесь.

    Результаты выполнения этой программы представлены на рисунке 1.


Рис.1. Результат выполнения приложения

    На следующем шаге мы рассмотрим сохранение в векторе объектов класса.




Предыдущий шаг Содержание Следующий шаг