LINUX.ORG.RU

C++ параллельный проход по нескольким контейнерам.

 


0

2

А есть стандартная хрень, которой можно дать 2 контейнера и она создаст некий «параллельный итератор», который идёт сразу по двум контейнерам вперёд и показывает на очередную пару элементов, лежащих в разных контейнерах?

Если у контейнеров разная длина, исключение при конструировании такой байды.

Хочется сравнить 2 контейнера (вектора, листа) на предмет лежания в них по одним и тем же индексам объектов, равных друг другу.

Я сломал лор - реальных версий этого поста меньше, чем циферка.

★☆

Последнее исправление: kiverattes (всего исправлений: 2)

ВНЕЗАПНО

a == b
Deleted
()

Хочется сравнить 2 контейнера (вектора, листа) на предмет лежания в них по одним и тем же индексам объектов, равных друг другу.

std::mismatch, если надо не только сравнить, но и получить различие.

anonymous
()

А чем такое не устраивает?

for (auto i=container1.begin(), auto j=container2.begin() ; i!=container1.end() ; ++i, ++j){
}

Kroz ★★★★★
()
Ответ на: комментарий от Deleted

Ну тогда нужна проверка в коде: if(c1.size() == c2.size() { }, иначе это гарантированный способ получить крэш.

invy ★★★★★
()
Ответ на: комментарий от invy

Если у контейнеров разная длина, исключение при конструировании такой байды.

Думаю, что ТС это осилит сделать и сам :)

Deleted
()
Ответ на: комментарий от mix_mix

На какие ухищрения не пойдут люди, лишь бы не использовать STL-алгоритмы.

Ты про std::for_each ? С введением auto и конструкции for(e:container), ИМХО, смысл этого алгоритма исчез.

Kroz ★★★★★
()

Если тебе и вправду *параллельный* проход по нескольким контейнерам нужен, то в thrust есть zip iterator ^____~

fmdw
()

как сказали выше — std::mismatch. если в общем случае, а не только сравнивать — std::transform.

алсо. неосиляторов переписи тред.

anonymous
()
Ответ на: комментарий от Kroz

TC хочет ещё независимость от количества контейнеров)

kiverattes ★☆
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.