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 cookie và Chính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.