| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Парный итератор |
| Автор: borisbn 12.11.2011, 18:03 | ||||||||
| Всем привет. Название не очень, но попробую объяснить здесь. Не так часто, но, в общем-то, и не редко, бывают ситуации, когда необходимо пройтись сразу по двум контейнерам. Естественно, предполагается, что они одинакового размера. Есть парочка вариантов, как это сделать: 1) В цикле for инициализировать два итератора и инкрементировать оба (так себе объяснение... лучше код)
2) Создать структуру из двух элементов, слить в один контейнер данные из обоих контейнеров:
оба способа мне не нравятся: первый способ - просто не нравится Почитывая описание BOOST_FOREACH наткнулся на такую фразу
и вот последний пункт меня заинтересовал. Теперь, собственно, вопрос: можно ли как-то стандартным способом пройтись по двум контейнерам ? Типа такого:
Спасибо. |
| Автор: alexvs11 12.11.2011, 18:17 | ||
наверно есть более подходящий алгоритм |
| Автор: bsa 12.11.2011, 19:08 | ||
std::transform. |
| Автор: alexvs11 12.11.2011, 19:14 |
| bsa, да, но там есть ненужны OutputIterator |
| Автор: bsa 12.11.2011, 19:15 |
никто не мешает сделать "пустой" OutputIterator |
| Автор: borisbn 12.11.2011, 19:44 | ||
| bsa, ага. на transform заглядывался, но мне не понравилось, что нужно делать предикат (нельзя просто for), да и свой "пустой" iterator тоже лениво делать А что, всё-таки, значит строка в доке к бусту:
Не то, что мне нужно ? |
| Автор: alexvs11 12.11.2011, 19:56 |
| borisbn, а mismatch? насчет предиката - этож stl, как иначе по-поводу BOOST_FOREACH походу это только для std::map |
| Автор: boostcoder 12.11.2011, 20:04 | ||
это поддержка спецификации boost.range, ибо там один объект хранит два итератора, т.е. range.
http://liveworkspace.org/code/51c35636811766545509eec8fff40ac4 Добавлено через 1 минуту и 46 секунд приведи пример пожалуйста. |
| Автор: alexvs11 12.11.2011, 20:13 |
вы видимо ответили на вопрос я чисто по отрывкам из интернетов сделал вывод |
| Автор: boostcoder 12.11.2011, 20:26 | ||
borisbn, а вот ответ на твой вопрос:
http://liveworkspace.org/code/0d3632e0846e791b9482af54dbc28e52 |
| Автор: borisbn 12.11.2011, 22:19 | ||
ясно. не то. то. типа "sugar" version of transform... ИМХО пример был бы лучше такой (разные контейнеры)
boostcoder, респект и спасибо. |