我有:C++傳遞unique_ptrs作爲參數的向量相對應的另一相等長度向量的元素(特別是平行地)
矢量的unique_ptr
小號對象A的
新默認構建的載體的載體的ObjectB,
對象B中具有簽名
void f(unique_ptr<ObjectA> o)
的函數。
(從這裏略去了對Word對象)
我該怎麼做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然後lambda函數,但不知道如何獲得相應的元素。我想增加一個計數器,但是我認爲這並不好(我可能是錯的)。
當然,我可以使用for循環從0到結束,但我很確定有一個簡單的東西我錯過了,它不是一個簡單的for循環。
謝謝。
你會意識到,通過傳遞的唯一指針,你*所有權轉讓*這些指針從列表中移出,並且進入該函數,是否正確?另外,它也不與'std :: transform'並行。 –
@NicolBolas是的,我使用了轉移,但是我不知道轉換是(MTG player?off topic,nm) – chemelnucfin
你的意思是當你說並行嗎?'transform'會像其他每一個stdlib算法一樣工作,而'transform'不會工作,因爲它需要一個函子返回一些東西。 – pmr