Articles of c ++ 11

Wie ruft man eine function für alle variadischen Vorlagenargumente auf?

ich möchte zu tun template void print(ArgTypes… Args) { print(Args)…; } Und muss es dieser ziemlich sperrigen rekursiven Kette entsprechen: template void print(const T& t, ArgTypes… Args) { print(t); print(Args…); } gefolgt von expliziten Ein-Parameter-Spezialisierungen für jeden Typ, den ich drucken möchte. Das “Problem” bei der rekursiven Implementierung besteht darin, dass viel redundanter Code erzeugt […]

Wie kann ich C ++ 11 in Qt Creator aktivieren?

Der Titel ist ziemlich selbstbeschreibend. Ich habe Qt Creator 2.7.0 heruntergeladen, und ich versuche, einige grundlegende C ++ 11 Code zu kompilieren: int my_array[5] = {1, 2, 3, 4, 5}; for(int &x : my_array) { x *= 2; } Ich erhalte den folgenden Fehler: range based for loops are not allowed in c++ 98 mode […]

Wie überprüft man, ob ein std :: -Thread noch läuft?

Wie kann ich überprüfen, ob ein std::thread (plattformunabhängig) noch läuft? Es fehlt eine timed_join() Methode und joinable() ist dafür nicht gedacht. Ich dachte daran, einen Mutex mit einem std::lock_guard in den Thread zu std::lock_guard und mithilfe der try_lock() -Methode des Mutex festzustellen, ob er noch gesperrt ist (der Thread läuft), aber es erscheint mir unnötig […]

Warum hat C ++ keinen Garbage Collector?

Ich stelle diese Frage nicht wegen der Vorteile der Garbage-Collection vor allem. Mein Hauptgrund dafür ist, dass ich weiß, dass Bjarne Stroustrup gesagt hat, dass C ++ irgendwann einen Müllsammler haben wird. Mit dem gesagt, warum wurde es nicht hinzugefügt? Es gibt bereits einige Garbage Collectors für C ++. Ist das nur eines von diesen […]

Unterschied zwischen spitzen Klammern und doppelten Anführungszeichen “”, wenn Headerdateien in C ++ eingeschlossen sind?

Mögliche Duplikate: Was ist der Unterschied zwischen #include und #include “filename”? Was ist der Unterschied zwischen der spitzen Klammer und doppelten Anführungszeichen ” ” wenn Header-Dateien in C ++ eingeschlossen sind? Ich meine, welche Dateien sollen mit einbezogen werden zB: #include und welche Dateien sollen mit einbezogen werden zB: #include “MyFile.h” ???

Wie verwende ich die range-basierte for () Schleife mit std :: map?

Das gängige Beispiel für C ++ 11-basierte for () -Schleifen ist immer etwas Einfaches: std::vector numbers = { 1, 2, 3, 4, 5, 6, 7 }; for ( auto xyz : numbers ) { std::cout << xyz << std::endl; } In diesem Fall ist xyz ein int . Aber was passiert, wenn wir so etwas […]

C ++ 11 Reverse-Range-basierte For-Schleife

Gibt es einen Container-Adapter, der die Richtung der Iteratoren umkehren würde, so dass ich mit einer bereichsbasierten For-Schleife rückwärts über einen Container iterieren kann? Mit expliziten Iteratoren würde ich das konvertieren: for (auto i = c.begin(); i != c.end(); ++i) { … das mögen: for (auto i = c.rbegin(); i != c.rend(); ++i) { … […]

Generieren Sie zufällige Zahlen mit zufälliger C ++ 11-Bibliothek

Wie der Titel andeutet, versuche ich herauszufinden, wie man mit der neuen C ++ 11 -Bibliothek . Ich habe es mit diesem Code versucht: std::default_random_engine generator; std::uniform_real_distribution uniform_distance(1, 10.001); Das Problem mit dem Code, den ich habe, ist, dass jedes Mal, wenn ich es kompiliere und ausführe, es immer die gleichen Zahlen erzeugt. Also meine […]

Warum können lambdas vom Compiler besser optimiert werden als einfache functionen?

In seinem Buch The C++ Standard Library (Second Edition) Nicolai Josuttis fest, dass Lambdas vom Compiler besser optimiert werden können als einfache functionen. Außerdem optimieren C ++ – Compiler Lambdas besser als normale functionen. (Seite 213) Warum das? Ich dachte, wenn es um Inlining geht, sollte es keinen Unterschied mehr geben. Der einzige Grund, an […]

Warum ist std :: function nicht gleichwertig?

Diese Frage gilt auch für boost::function und std::tr1::function . std::function ist keine Gleichheit vergleichbar: #include void foo() { } int main() { std::function f(foo), g(foo); bool are_equal(f == g); // Error: f and g are not equality comparable } In C ++ 11 existieren der operator== und der operator!= Überladungen einfach nicht. In einem frühen […]