Итераторы в C ++ STL
Предварительное условие: Введение в итераторы
Итераторы используются для указания адресов памяти контейнеров STL. Они в основном используются в последовательности чисел, символов и т. Д. Они уменьшают сложность и время выполнения программы.
Операции итераторов : -
1. begin () : - Эта функция используется для возврата начальной позиции контейнера.
2. end () : - Эта функция используется для возврата после конечной позиции контейнера.
// C++ code to demonstrate the working of // iterator, begin() and end() #include<iostream> #include<iterator> // for iterators #include<vector> // for vectors using namespace std; int main() { vector< int > ar = { 1, 2, 3, 4, 5 }; // Declaring iterator to a vector vector< int >::iterator ptr; // Displaying vector elements using begin() and end() cout << "The vector elements are : " ; for (ptr = ar.begin(); ptr < ar.end(); ptr++) cout << *ptr << " " ; return 0; } |
Выход:
The vector elements are : 1 2 3 4 5
3. advance () : - Эта функция используется для увеличения позиции итератора до указанного числа, указанного в его аргументах.
// C++ code to demonstrate the working of // advance() #include<iostream> #include<iterator> // for iterators #include<vector> // for vectors using namespace std; int main() { vector< int > ar = { 1, 2, 3, 4, 5 }; // Declaring iterator to a vector vector< int >::iterator ptr = ar.begin(); // Using advance() to increment iterator position // points to 4 advance(ptr, 3); // Displaying iterator position cout << "The position of iterator after advancing is : " ; cout << *ptr << " " ; return 0; } |
Выход:
Положение итератора после продвижения: 4
4. next () : - Эта функция возвращает новый итератор , на который будет указывать итератор после продвижения позиций, указанных в его аргументах.
5. prev () : - Эта функция возвращает новый итератор , на который будет указывать итератор после уменьшения позиций, указанных в его аргументах.
// C++ code to demonstrate the working of // next() and prev() #include<iostream> #include<iterator> // for iterators #include<vector> // for vectors using namespace std; int main() { vector< int > ar = { 1, 2, 3, 4, 5 }; // Declaring iterators to a vector vector< int >::iterator ptr = ar.begin(); vector< int >::iterator ftr = ar.end(); // Using next() to return new iterator // points to 4 auto it = next(ptr, 3); // Using prev() to return new iterator // points to 3 auto it1 = prev(ftr, 3); // Displaying iterator position cout << "The position of new iterator using next() is : " ; cout << *it << " " ; cout << endl; // Displaying iterator position cout << "The position of new iterator using prev() is : " ; cout << *it1 << " " ; cout << endl; return 0; } |
Выход:
Позиция нового итератора, использующего next (): 4 Позиция нового итератора с использованием prev (): 3
6. insertter () : - Эта функция используется для вставки элементов в любую позицию в контейнере. Он принимает 2 аргумента, контейнер и итератор для позиции, в которую должны быть вставлены элементы .
// C++ code to demonstrate the working of // inserter() #include<iostream> #include<iterator> // for iterators #include<vector> // for vectors using namespace std; int main() { vector< int > ar = { 1, 2, 3, 4, 5 }; vector< int > ar1 = {10, 20, 30}; // Declaring iterator to a vector vector< int >::iterator ptr = ar.begin(); // Using advance to set position advance(ptr, 3); // copying 1 vector elements in other using inserter() // inserts ar1 after 3rd position in ar copy(ar1.begin(), ar1.end(), inserter(ar,ptr)); // Displaying new vector elements cout << "The new vector after inserting elements is : " ; for ( int &x : ar) cout << x << " " ; return 0; } |
Выход:
Новый вектор после вставки элементов: 1 2 3 10 20 30 4 5
Типы итераторов:
- Итераторы ввода
- Итераторы вывода
- Вперед итератор
- Двунаправленные итераторы
- Итераторы произвольного доступа
Автором этой статьи является Манджит Сингх. Если вам нравится GeeksforGeeks и вы хотите внести свой вклад, вы также можете написать статью с помощью метода влиятельности. Посмотрите, как ваша статья появляется на главной странице GeeksforGeeks, и помогите другим гикам.
Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсужденной выше.