アトミックタイプのベクトルを割り当てる方法は?


8

どうすれば、原子の型を持つベクトルのメンバーを割り当てることができますか?

#include <iostream>
#include <thread>
#include <vector>

using namespace std;

int main()
{
    vector<atomic<bool>> myvector;
    int N=8;
    myvector.assign(N,false);
    cout<<"done!"<<endl;
}

https://wandbox.org/permlink/lchfOvqyL3YKNivk

prog.cc: In function 'int main()':
prog.cc:11:28: error: no matching function for call to 'std::vector<std::atomic<bool> >::assign(int&, bool)'
   11 |     myvector.assign(N,false);
      |                            ^

3
を忘れないでください#include <atomic>。エラーは(また)不完全な型atomic<bool>として言及しています。
O'Neil

回答:


8

std::atomic コピー可能でも移動可能でもないので、代わりに次のようにすることができます:

std::vector<std::atomic<bool>> myvector(8);
for (auto& b : myvector) { std::atomic_init(&b, false); }
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.