Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
71 / 71 / 55
Регистрация: 04.06.2016
Сообщений: 237
1

Как можно получить итератор на элемент обрабатываемый в лямбде в функции for_each?STL

13.07.2017, 22:14. Показов 1045. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Как можно получить итератор на элемент обрабатываемый в лямбде?
C++
1
for_each(arr.begin(), arr.end(), [arr, dubl](char n) {if (n == dubl) arr.insert(Здесь должен быть итератор на n, *n); })
arr - вектор чаров
dubl - char
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.07.2017, 22:14
Ответы с готовыми решениями:

Как более менее правильно написать итератор(не STL).
Вот, например, пишу класс и всегда помню советы типа "скрывайте реализацию класса" или "если...

STL библиотека. Ф-ция for_each
При изучении STL, столкнулся со странным поведением ф-ции for_each библиотеки algorithm void...

Multimap STL, получить последний элемент
Есть multimap: multimap <int, char> myMap; Там помещены элементы-пары: ...

Реализовать итератор в стиле STL
Подскажите как найти решение. class Iterator { int m_value; public: Iterator(const int...

2
495 / 209 / 70
Регистрация: 27.05.2016
Сообщений: 557
14.07.2017, 01:03 2
Так нельзя делать - после первого же insert все итераторы в for_each станут скорее всего невалидными.

Добавлено через 17 минут
Решить можно вручную:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <vector>
#include <iostream>
 
int main()
{
    std::vector<char> v{'H', 'e', 'l', 'l', 'o'};
    for (auto it = v.begin(), end = v.end(); it != end; ++it)
    {
        if (*it == 'l')
        {
            it = v.insert(it, 'X');
            ++it;
            end = v.end();
        }
    }
 
    for(char ch : v) std::cout << ch << " ";
}
1
71 / 71 / 55
Регистрация: 04.06.2016
Сообщений: 237
14.07.2017, 01:06  [ТС] 3
notAll, ага,уже понял.

Добавлено через 55 секунд
notAll, вручную то я знал как делать,но вот решил упростить код а в итоге только все усложнил.
0
14.07.2017, 01:06
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.07.2017, 01:06
Помогаю со студенческими работами здесь

STL итератор на конец контейнера
Подскажите пожалуйста у меня задача сделать дерево и слизать интерфейс с STL std::map. Вопрос в...

Написать свой итератор, чтобы алгоритмы STL работали с моим классом
Как написать свой итератор, чтобы действовал как стандартный и мог использовать STL алгоритмы. (У...

Как можно получить this.pp в функции foo() ?
function a () { this.pp = 'aaa'; this.b = document.createElement('&lt;img'); b.onclick = foo;...

Как сделать, чтобы итератор указывал на определенный элемент контейнера?
как сделать, чтобы итератор указывал на, допустим, пятый элемент контейнера (вектора)


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru