Ich habe eine std::vector<std::atomic_bool>
, die ich auf einige beliebige n
Größe ändern möchte, wobei alle neu erstellten Objekte einen Wert von True zugewiesen werden. Das Programm wird nicht erstellt, da resize()
auf den Kopierkonstruktor des Datentyps und nicht auf seinen Zuweisungsoperator angewiesen ist. Gibt es eine Möglichkeit, einem atomic_bool
einen Standardwert zuzuordnen oder würde ich mit einer Schleife und store()
alle Werte festhalten?Ändern der Größe eines std :: vector <std :: atomic_bool> Zuweisen zu allen atomaren Bools
Was ich habe versucht:
#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
}
}
Es macht nicht Sinn, atomare Typen in einen Vektor zu stecken. Atomtypen sind so angelegt, dass mehrere Threads darauf zugreifen können, und das scheint nicht sinnvoll zu sein, wenn die Elemente verschoben werden können. Wenn Sie keine Neuzuweisung wünschen, erstellen Sie einfach den Vektor mit der Größe 100 von Anfang an ([Demo] (http://melpon.org/wandbox/permlink/UHlG7obdmMgsfxx)). –
@KerrekSB Ich denke, es ist in Ordnung. Sie können Vektor aus mehreren Threads lesen, solange kein Thread versucht, den Vektor zu ändern. –
@ BryanChen; Sicher, das kannst du, aber es ergibt keinen Sinn. Dafür gibt es keinen Anwendungsfall. –