Здравствуйте, pkl, Вы писали:
pkl>Жопа ли это? Я тупой наркоман? Можно ли это сделать уже щас без вундервафлинга?
Ты можешь им предложить это лично. Улучшения так себе, если честно и мне кажется это можно решеть придумав класс-обёртку контейнер-контейнеров.
Здравствуйте, pkl, Вы писали:
pkl>Есть 3 контейнера: a, b, c. Хочу запустить 1 range-цикл по ним всем одновременно:
Логично было бы сделать как три вложенных цикла
for( auto i1 : a, auto i2 : b, auto i3 : c) {
}
развернув в
for(auto i1 : a) {
for(auto i2 : b) {
for(auto i3 : c) {
}
}
}
Здравствуйте, pkl, Вы писали:
pkl>На каждой итерации i1, i2, i3 имеет очередное значение из соответствующего контейнера. pkl>Цикл помирает как только исчерпается самый мелкий контейнер.
такой пробег обычно делается через zip. на плюсах это многословно можно сделать в бусте
слово zip можно встретить в хаскеле и питоне
расширять синтаксис C++ для zip кажется оверкилом, лучше что-то такое иметь в stl
Здравствуйте, night beast, Вы писали:
NB>Здравствуйте, pkl, Вы писали:
pkl>>Можно ли это сделать уже щас без вундервафлинга?
NB>можно. получится что-то вроде zip_iterator
Это несколько более жопно. Хочется в 1 строку встроенными средствами, не дописывая своих херен.
Здравствуйте, GhostCoders, Вы писали:
GC>Здравствуйте, pkl, Вы писали:
pkl>>Есть 3 контейнера: a, b, c. Хочу запустить 1 range-цикл по ним всем одновременно: GC>Логично было бы сделать как три вложенных цикла
GC>
GC>for( auto i1 : a, auto i2 : b, auto i3 : c) {
GC>}
GC>
GC>развернув в GC>
GC>for(auto i1 : a) {
GC> for(auto i2 : b) {
GC> for(auto i3 : c) {
GC> }
GC> }
GC>}
GC>
Здравствуйте, pkl, Вы писали:
GC>>for( auto i1 : a, auto i2 : b, auto i3 : c) { pkl>Не логично. У вложенных другая семантега.
Имею в виду, что для синтаксиса выше логичнее использовать вложенную семантику, а не zip.
Здравствуйте, GhostCoders, Вы писали:
GC>Здравствуйте, pkl, Вы писали:
GC>>>for( auto i1 : a, auto i2 : b, auto i3 : c) { pkl>>Не логично. У вложенных другая семантега. GC>Имею в виду, что для синтаксиса выше логичнее использовать вложенную семантику, а не zip.
Не понял почему логичнее. Вы сначала бежите по внутреннему, потом делаете шаг по внешнему и заново бежите по внутреннему.
Здравствуйте, rean, Вы писали:
R>А три итератора и использование обычного while цикла и трех проверок на end() уже не C++? Надо обязательно стандарт менять?
Здравствуйте, rean, Вы писали:
pkl>>Жопа ли это? Я тупой наркоман? Можно ли это сделать уже щас без вундервафлинга?
R>А три итератора и использование обычного while цикла и трех проверок на end() уже не C++? Надо обязательно стандарт менять?
Ну поменяли же стандарт, введя range based loops, хотя можно было обойтись итераторами.
Здравствуйте, uzhas, Вы писали:
U>Здравствуйте, pkl, Вы писали:
pkl>>Не понял почему логичнее.
U>потому что это самая первая ассоциация, когда видишь такой код. похоже на list comprehension: https://en.wikipedia.org/wiki/List_comprehension
У чувака код работает не так: он много раз бегает по 3, меньше раз бегает по 2 и один раз бегает по 1.
Это совсем не то, что делал мой код из первого поста.