Articles of c ++ 11

TMP: Wie generalisiert man ein kartesisches Vektorprodukt?

Es gibt eine ausgezeichnete C ++ – Lösung (eigentlich 2 Lösungen: eine rekursive und eine nicht-rekursive), zu einem kartesischen Produkt eines Vektors von ganzzahligen Vektoren . Zum Zweck der Veranschaulichung / Einfachheit konzentrieren wir uns nur auf die nicht-rekursive Version . Meine Frage ist, wie kann man diesen Code mit Vorlagen verallgemeinern, um ein std::tuple […]

Wie initialisiere ich ein Member-Array mit einer Initialisiererliste?

Ich mache mich mit C ++ 0x vertraut und teste alles mit g ++ 4.6 Ich habe gerade den folgenden Code ausprobiert, dachte, es würde funktionieren, aber es kompiliert nicht. Ich bekomme den Fehler: incompatible types in assignment of ‘std::initializer_list’ to ‘const int [2]’ struct Foo { int const data[2]; Foo(std::initializer_list& ini) : data(ini) {} […]

Unterschied zwischen std :: system_clock und std :: steady_clock?

Was ist der Unterschied zwischen std::system_clock und std::steady_clock ? (Ein Beispielfall, der verschiedene Ergebnisse / Verhaltensweisen veranschaulicht, wäre großartig). Wenn mein Ziel ist, die Ausführungszeit von functionen genau zu messen (wie ein Benchmark), was wäre die beste Wahl zwischen std::system_clock , std::steady_clock und std::high_resolution_clock ?

Warum ist das Verhalten von C ++ initializer_list für std :: vector und std :: array unterschiedlich?

Code: std::vector x{1,2,3,4}; std::array y{{1,2,3,4}}; Warum brauche ich doppelte geschweifte Klammern für std :: array?

Verwenden Sie für das Argument std :: bind mit der Member-function Objektzeiger oder nicht?

Wenn Sie std::bind , um eine std::bind zu binden, ist das erste Argument die Objekte this pointerss. Es funktioniert jedoch, indem das Objekt sowohl als pointers als auch nicht übergeben wird. Siehe zum Beispiel das folgende Programm: #include #include struct foo { void bar(int v) { std::cout << "foo::bar – " << v << '\n'; […]

Benötigt std :: mt19937 Aufwärmen?

Ich habe gelesen, dass viele Pseudozufallszahlengeneratoren viele Proben benötigen, um “aufgewärmt” zu werden. Ist das der Fall, wenn std :: random_device verwendet wird, um std :: mt19937 zu säen, oder können wir erwarten, dass es nach der Konstruktion fertig ist? Der betreffende Code: #include std::random_device rd; std::mt19937 gen(rd());

std :: shared_ptr Thread Sicherheit erklärt

Ich lese http://gcc.gnu.org/onlinedocs/libstdc++/manual/shared_ptr.html und einige Thread-Sicherheitsprobleme sind für mich immer noch nicht klar: Standard garantiert, dass Referenzzählung threadsicher gehandhabt wird und plattformunabhängig ist, oder? Ähnliche Ausgabe – Standard garantiert, dass nur ein Thread (der die letzte Referenz hält) den Löschvorgang für das gemeinsame Objekt aufruft, richtig? shared_ptr garantiert keine Threadsicherheit für das darin gespeicherte Objekt? […]

Wie implementiert man die Fünfer-Regel?

UPDATE am unteren Rand q1: Wie würden Sie die Fünfer-Regel für eine class implementieren, die ziemlich schwere Ressourcen verwaltet, von denen Sie aber möchten, dass sie wertmäßig weitergegeben wird, weil dies die Verwendung erheblich vereinfacht und verschönert? Oder werden nicht alle fünf Elemente der Regel überhaupt benötigt? In der Praxis beginne ich etwas mit der […]

Wie kann ich zwei Vektoren auf dieselbe Weise sortieren, mit Kriterien, die nur einen der Vektoren verwenden?

Wie kann ich zwei Vektoren auf dieselbe Weise sortieren, mit Kriterien, die nur einen der Vektoren verwenden? Angenommen, ich habe zwei Vektoren der gleichen Größe: vector vectorA; vector vectorB; Ich sortiere dann vectorA mit einer Vergleichsfunktion. Diese Sortierung ordnete vectorA . Wie kann ich die gleiche Neuordnung auf vectorB ? Eine Option ist das Erstellen […]

Warum verwenden Sie std :: move, wenn Sie && in C ++ 11 haben?

Mögliche Duplikate: Kann mir jemand bitte Bewegungssemantik erklären? Ich habe kürzlich an einem C ++ 11 Seminar teilgenommen und den folgenden Ratschlag gegeben. when you have && and you are unsure, you will almost always use std::move Könnte mir jemand erklären, warum Sie std::move im Gegensatz zu einigen Alternativen und einigen Fällen verwenden sollten, wenn […]