|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Вставка и удаление элементов вектораИтак, мы уже знаем, как вставить новые значения в конец вектора. Теперь посмотрим, как их записать в середину. Для этого применяется функция insert(). Удалить элементы из вектора можно с помощью функции erase(). Рассмотрим программу, иллюстрирующую применение функций insert() и erase().
// Иллюстрация функций insert и erase. #include"stdafx.h" // Доступ к элементам вектора <: помощью итератора. #include <iostream> #include <vector> #include <windows.h> #include <cctype> using namespace std; int main() { vector<char> v(10); vector<char> v2; char str[] = "<Vector>"; unsigned int i; // Инициализируем вектор v. for(i=0; i<10; i++) v[i] = i + 'a'; // Копируем символы из строки str в вектор v2. for(i=0; str[i]; i++) v2.push_back(str[i]); // Выводим на экран исходное содержимое вектора SetConsoleOutputCP(1251); cout << "Исходное содержимое вектора v: \n"; for(i=0; i<v.size(); i++) cout << v[i] << " "; cout << "\n\n"; vector<char>::iterator p = v.begin(); p += 2; //Устанавливаем итератор на третий элемент. // Вставляем 10 символов 'X' в вектор v. v.insert(p, 10, 'X'); // Выводим на экран содержимое вектора после вставки, cout << "Размер вектора после вставки символов 'X' = " << v.size() << endl; cout << "Содержимое вектора v после вставки: \n"; for(i=0; i<v.size(); i++) cout <<v[i] <<" "; cout << "\n\n"; // Удаляем эти элементы. p = v.begin(); p += 2; // Устанавливаем итератор на третий элемент. v.erase(p, p+10); // Удаляем следующие 10 элементов. // Выводим на экран содержимое вектора после удаления. cout << "Размер вектора v после удаления = "<<v.size() << endl; cout << "Содержимое вектора V после удаления:\n"; for(i=0; i<v.size(); i++) cout << v[i] << " "; cout << "\n\n"; // Вставка вектора v2 в вектор v. v.insert(p, v2.begin(), v2.end()); cout << " Размер вектора v после вставки вектора v2 = "; cout << v.size() << endl; cout << "Содержимое вектора v после вставки:\n"; for(i=0; i<v.size(); i++) cout << v[i] << " "; cout << endl; char z; cin>>z; return 0; }
Эта программа выводит на экран следующие строки.
Эта программа демонстрирует применение двух видов функции insert(). Впервом случае она вставляет в вектор 10 символов X. Во втором — вставляет в вектор v содержимое вектора v2. Вторая форма функции insert() намного интереснее. Она имеет три арсумента, которые являются итераторами. Первый из них задает позицию, с которой начинается вставка элементов в контейнер. Следующие два аргумента задают начало и конец вставляемой последовательности.
Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.005 сек.) |