Làm thế nào để gán một vectơ của các loại nguyên tử?


8

Làm thế nào tôi có thể chỉ định các thành viên của một vectơ với một loại nguyên tử?

#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
Đừng quên #include <atomic>. Các lỗi (cũng) đề cập đến atomic<bool>như là loại không đầy đủ .
O'Neil

Câu trả lời:


8

std::atomic không thể sao chép hoặc di chuyển có thể xây dựng, vì vậy bạn có thể làm thay thế:

std::vector<std::atomic<bool>> myvector(8);
for (auto& b : myvector) { std::atomic_init(&b, false); }
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.