Итераторы в C ++ STL

Опубликовано: 1 Января, 2022

Предварительное условие: Введение в итераторы
Итераторы используются для указания адресов памяти контейнеров 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 

Типы итераторов:

  1. Итераторы ввода
  2. Итераторы вывода
  3. Вперед итератор
  4. Двунаправленные итераторы
  5. Итераторы произвольного доступа

Автором этой статьи является Манджит Сингх. Если вам нравится GeeksforGeeks и вы хотите внести свой вклад, вы также можете написать статью с помощью метода влиятельности. Посмотрите, как ваша статья появляется на главной странице GeeksforGeeks, и помогите другим гикам.

Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсужденной выше.

Хотите узнать о лучших видео и практических задачах, ознакомьтесь с базовым курсом C ++ для базового и продвинутого уровня C ++ и курсом C ++ STL для базового уровня плюс STL. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .
C++