Записки программиста
Авторский блог Михаила Лукина

for_each

for_each  |  lower_bound  |  upper_bound


template <class InputIterator, class Function>
Function for_each (InputIterator first, InputIterator last, Function f);

Применяет функцию f ко всем элементам какого-нибудь контейнера от first до last, не включая last: [first; last).


Замечание.

Параметры

first, last
Итераторы на начальную и конечную позиции последовательности, для которой будет пременена функция f.
f
Унарная функция, которая в качестве аргументов принимает элементы последовательности [first; last).

 

Возвращаемое значение

Функция f

 

Пример.

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

void PrintElem(int elem)
{
    cout << elem << " ";
}

int main ()
{
    vector<int> theVector (3, 100);

    cout << "theVector:" << endl;
    for_each(theVector.begin(), theVector.end(), PrintElem);
    cout << endl;

    vector<int>::iterator iter;

    iter = theVector.begin();
    iter = theVector.insert (iter, 200 );

    cout << "After inserting an element:" << endl;
    for_each(theVector.begin(), theVector.end(), PrintElem);
    cout << endl;

    theVector.insert (iter, 2, 300);

    cout << "After inserting repeating element:" << endl;
    for_each(theVector.begin(), theVector.end(), PrintElem);
    cout << endl;

    //iter больше недействетелен. Получаем его снова. 
    iter = theVector.begin();

    vector<int> insertingVector (2,400);
    theVector.insert (iter+4,insertingVector.begin(),insertingVector.end());

    cout << "After inserting a vector:" << endl;
    for_each(theVector.begin(), theVector.end(), PrintElem);
    cout << endl;

    int myArray [] = {501, 502, 503};
    theVector.insert (theVector.begin()+2, myArray, myArray+3); //Указатель является итератором произвольного доступа.

    cout << "After inserting an array:" << endl;
    for_each(theVector.begin(), theVector.end(), PrintElem);
    cout << endl;

    return 0;
}
 
 


Результат:

theVector:
100 100 100
After inserting an element:
200 100 100 100
After inserting repeating element:
300 300 200 100 100 100
After inserting a vector:
300 300 200 100 400 400 100 100
After inserting an array:
300 300 501 502 503 200 100 400 400 100 100

 

Временная сложность

O(n)

 

Версия для печати

© 2010-2014. Записки программиста. Все права защищены.
Яндекс.Метрика
ВебСтолица.РУ: создай свой бесплатный сайт!  | Пожаловаться  
Движок: Amiro CMS