У меня есть:
вектор unique_ptr
с ObjectA
вектор нового по умолчанию построенного вектора ObjectB, и
функция в объекте B, имеющая подпись void f(unique_ptr<ObjectA> o)
.
(слово Object здесь не указывается)
Как сделатьЯ делаю Bvec[i].f(Avec[i])
для всех 0 < i < length
параллельно?
Я пытался использовать transform(Bvec.begin(), Bvec.end(), A.begin(), B.begin(), mem_fun_ref(&B::f))
, но это дает кучу ошибок, и я не уверен, будет ли он даже передавать правильный A в качестве параметране говоря уже о том, чтобы позволить мне переместить их.(&B::f(A.begin())
не будет работать как последний параметр.
Я также думал об использовании for_each, а затем лямбда-функции, но не уверен, как получить соответствующий элемент.Я думал об увеличении счетчика, но тогда я не думаю, что он хорошо распараллеливается (я могу ошибаться).
Я, конечно, могу использовать цикл for от 0 до конца, но я уверен, чтоесть простая вещь, которую я пропускаю, и она не параллельна простой петле for.
Спасибо.