На этом шаге мы рассмотрим изменение содержимого вектора.
В данной программе демонстрируется использование функций 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. Результат выполнения приложения
На следующем шаге мы рассмотрим сохранение в векторе объектов класса.