[英]push_back/append or appending a vector with a loop in C++ Armadillo
[英]C++ vector push_back async object in for loop
我在 C++11 中編寫了一個 for 循環,我需要將異步 object 推回一個向量。 我想將 object 初始化分成兩步:
std::vector<std::future<bool>> asyncThreads;
for (int i = 0; i < processorCount; i++) {
auto boundFunc = std::bind(&Foo::foo, this);
auto asyncThread = std::async(std::launch::async, boundFunc)
asyncThreads.push_back(asyncThread);
}
現在我確實意識到在 for 循環結束時boundFunc
和asyncThread
對象 scope 中的 go( push_back
function 應該復制/移動值),但是為什么直接在push_back call
中聲明對象有效? 像這樣:
std::vector<std::future<bool>> asyncThreads;
for (int i = 0; i < processorCount; i++) {
asyncThreads.push_back(std::async(std::launch::async, std::bind(&Foo::foo, this)));
}
std::future
object 不可復制,但可移動。 因此,您必須在 object 上調用 move 以將其推送到矢量上。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.