私はstd::vector<std::atomic_bool>
を任意のn
にリサイズしたいと思っています。 resize()
は、その代入演算子ではなく、データ型のコピーコンストラクタに依存しているため、プログラムはビルドされません。 atomic_bool
にデフォルト値を割り当てる方法はありますか、ループを使用していて、すべての値をstore()
入力しても問題はありませんか?std :: vector <std :: atomic_bool>のサイズを変更してすべてのアトミックなブールに割り当てます
は、私が試した何を:あなたはどこか別の場所になるためにそれらを再割り当て傾けるよう
#include <atomic>
#include <vector>
class foo() {
public:
std::vector<std::atomic_bool> vec;
foo() {
std::atomic_bool temp(true);
vec.resize(100, std::atomic_bool(true)); //try 1
vec.resize(100, temp); //try 2
}
}
それはなりません
FWIWは、別のオプションは、デフォルトの建設と割り当ての組み合わせとしてコピー建設を指揮するタイプで、個々の
std::atomic_bool
Sをラップしています原子型をベクトルに固執する感覚。アトミック型は複数のスレッドによってアクセスされるように設計されており、要素を再配置することはできません。再割り当てをしたくない場合は、最初からサイズ100のベクトルを作成してください([Demo](http://melpon.org/wandbox/permlink/UHlG7obdmMgslfxx))。 –@KerrekSBいいと思います。スレッドがベクトルを変更しようとしていない限り、複数のスレッドからベクトルを読み取ることができます。 @BryanChen; –
;もちろん、それは可能ですが、それは理にかなっていません。それのためのusecaseはありません。 –