![]() |
|
Программирование >> Расширенная версия языка c++
В этой программе тоже сначала создается вектор v нулевой длины. Далее с помощью функции-члена push back() к концу вектора v добавляются некоторые значения и размер вектора v увеличивается. Обратите внимание на объявление итератора р. Тип iterator определяется с помощью класса-контейнера. То есть, чтобы получить итератор для выбранного контейнера, объявить его нужно именно так, как показано в примере: просто укажите перед типом iterator имя контейнера. С помощью функции-члена beginO итератор инициализируется, указывая на начало вектора. Возвращаемым значением этой функции как раз и является итератор начала вектора. Теперь, применяя к итератору оператор инкремента, можно получить доступ к любому выбранному элементу вектора. Этот процесс совершенно аналогичен использованию указателя для доступа к элементам массива. С помощью функции-члена end() определяется факт достижения конца вектора. Возвращаемым значением этой функции является итератор того места, которое находится сразу за последним элементом вектора, Таким образом, если итератор р равен возвращаемому значению функции v.end(), значит, конец вектора был достигнут. 3. Помимо возможности элементов в конце вектора, с помощью функции-члена insert() их можно вставлять в его середину. Удалять элементы из вектора можно с помощью функции-члена erase(). Демонстрация функции rt () ase () #include <io3tream> tinclude <vector> , ... using namespace std; int mainO vector<int> v(5r 1); создание пятиэлементного вектора из единиц Int i; . . . мвод на экран исходн1х размера и содержого вектора cou Размер = <ч v.s.Lzei) and; cou Исходное содержимое;\n ; for(i=0; i<v.size(); i++) cout v[i] ; cout endl; vector<int> : : i-er-p = v.becm!); : p += 2; указывает на третий элемент мавка в вектор на то место, куда указывает итератор р десяти вых элементов, каждый из которых равен 9 V. insert (р, 10, 9) ; вывод на экран размера и содержимого вектора после вставки cout Размер после вставка size () endl; После выполнения программы на экране появится следующее: Размер = 5 Исходное содержимое: . ., . 11111 Размер после вставки =15 , . . Содержимое после вставки: 119999999999111 Размер после удаления = 5 Содержимое после удаления: 1 1 1 1 1 . 4. В следующем примере вектор используется для хранения объектов класса, определенного программистом. Обратите внимание, что в классе определяются конструктор по умолчанию и перегруженные версии операторов < и ==. Помните, в зависимости от того, как реализована библиотека стандарт-н1х шаблонов для вашего компилятора, вам может понадобиться определить и другие операторы сравнения. Хранение тсре объектов пользовательского класса ♦include <iostream> ♦include <vector> using namespace std; clas mo { double d; ... cout Содержимое после вставки: \п ; for(i=0; i<v.size(); i++) cout v[i] ; cout endl; удаление вставленных элементов p tegin () ; p +2; указывает на третий элемент V.erase{р, р+10); удаление слеющих десяти элементов за элементом, на который указывает итератор р . ыводна экран размера и содержого вектора после удаления cout Размер после удаления ize() endl; cout Содерж№4ое после удаления:\п ; cout cout endl; return 0; После выполнения программы на экране появится следующее: О 0.333333 0.666667 1 1.3333 6667 2 2.33333 2.66667 3 О 0.7 1.4 2.1 2.8 3.5 4.2 4.9 5.6 6.3 Упражнения 1. Поэкспериментируйте с представленными примерами. Попытайтесь делать небольшие изменения в программах и исследуйте результаты. public: , ЧгГг;*=.у Demo О { .0; } - . Demo (doubleх) { d = х; } ( Dem r- (double x) ( .. -ji,:-;-; ., d = x; return *this; } .ij double getdO {return d; } bol r< (Demo a. Demo b) - - return a.getdO < b.getd{); boll operator- (Demo a. Demo b) { return == int mainO vector<Demo> v; int i; for(i=0; i<10, i++) v.push hack(Demo (i/3.0)) ; for (i = 0; Kv.size () ; cout v[i].getd(} ; cout endl; for(i=0; Kv.sizeO; i + v[i] = v[i] .getdO * 2.1; () i cout v[i],getd() ; return 0;
|
© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |