Что делать, если мы хотим
if ( *c_iter % 2 )
pvec_even->push_back( *c_iter );
else pvec_odd->push_back( *c_iter );
}
Что делать, если мы хотим просмотреть некоторое подмножество элементов, например взять каждый второй или третий элемент, или хотим начать с середины? Итераторы поддерживают адресную арифметику, а значит, мы можем прибавить некоторое число к итератору:
vector<int>::iterator iter = vec->begin()+vec.size()/2;
iter получает значение адреса элемента из середины вектора, а выражение
iter += 2;
сдвигает iter на два элемента.
Арифметические действия с итераторами возможны только для контейнеров vector и deque. list не поддерживает адресную арифметику, поскольку его элементы не располагаются в непрерывной области памяти. Следующее выражение к списку неприменимо:
ilist.begin() + 2;
так как для перемещения на два элемента необходимо два раза перейти по адресу, содержащемуся в закрытом члене next. У классов vector и deque перемещение на два элемента означает прибавление 2 к указателю на текущий элемент. (Адресная арифметика рассматривается в разделе 3.3.)
Объект контейнерного типа может быть инициализирован парой итераторов, обозначающих начало и конец последовательности копируемых в новый объект элементов. (Второй итератор должен указывать на элемент, следующий за последним копируемым.) Допустим, есть вектор:
#include <vector>
#include <string>
#include <iostream>
int main()
{
vector<string> svec;
string intext;
while ( cin >> intext )
svec.push_back( intext );
// обработать svec ...
}
Вот как можно определить новые векторы, инициализируя их элементами первого вектора:
int main() {
vector<string> svec;
// ...
// инициализация svec2 всеми элементами svec
vector<string> svec2( svec.begin(), svec.end() );
// инициализация svec3 первой половиной svec
vector<string>::iterator it =
svec.begin() + svec.size()/2;
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий