Articles of c ++ 11

Finden Sie die Position des Elements in C ++ 11 range-based for loop?

Angenommen, ich habe den folgenden Code: vector list; for(auto& elem:list) { int i = elem; } Kann ich die Position von elem im Vektor finden, ohne einen separaten Iterator zu führen?

Wie kombiniere ich Hash-Werte in C ++ 0x?

C ++ 0x fügt hash(…) . Ich konnte jedoch keine hash_combine-function finden, wie in Boost dargestellt . Was ist der sauberste Weg, um so etwas zu implementieren? Vielleicht mit C ++ 0x xor_combine ?

Std :: function vs Vorlage

Dank C ++ 11 haben wir die std::function von Funktor-Wrappern erhalten. Leider höre ich nur schlechte Dinge über diese neuen Ergänzungen. Am beliebtesten ist, dass sie schrecklich langsam sind. Ich habe es getestet und sie sind wirklich im Vergleich zu Vorlagen. #include #include #include #include template float calc1(F f) { return -1.0f * f(3.3f) + […]

Pretty-Print std :: Tupel

Dies ist eine Fortsetzung meiner vorherigen Frage nach hübschen Druck-STL-Behältern , für die wir eine sehr elegante und vollständig allgemeine Lösung entwickelt haben. In diesem nächsten Schritt möchte ich pretty-printing für std::tuple mit variadischen Templates einschließen (das ist also streng genommen C ++ 11). Für std::pair sage ich einfach std::ostream & operator<<(std::ostream & o, const […]

Soll ich in C ++ std :: function oder einen functionszeiger verwenden?

Wenn ich eine Callback-function in C ++ implementiere, sollte ich immer noch den functionszeiger C-style verwenden: void (*callbackFunc)(int); Oder sollte ich std :: function verwenden: std::function callbackFunc;

Warum sollte das Verhalten von std :: memcpy für Objekte, die nicht TrivialCopyable sind, undefiniert sein?

Von http://en.cppreference.com/w/cpp/string/byte/memcpy : Wenn die Objekte nicht TrivialCopyable sind (zB Skalare, Arrays, C-kompatible Strukturen), ist das Verhalten nicht definiert. Bei meiner Arbeit haben wir std::memcpy lange Zeit verwendet, um Objekte, die nicht TrivialCopyable sind, bitweise zu vertauschen: void swapMemory(Entity* ePtr1, Entity* ePtr2) { static const int size = sizeof(Entity); char swapBuffer[size]; memcpy(swapBuffer, ePtr1, size); memcpy(ePtr1, […]

Was sind die Unterschiede zwischen C-like, Konstruktor und einheitlicher Initialisierung?

TTBOMK, gibt es drei Möglichkeiten, eine Variable in C ++ zu initialisieren. int x = 0; // C-like initialization int x (0); // Constructor initialization int x {0}; // Uniform initialization Die einheitliche Initialisierung wurde für C ++ 11 eingeführt , um eine einheitlichere Syntax zum Initialisieren verschiedener Arten von Variablen bereitzustellen, die in C […]

Schöne Möglichkeit, einen Vektor an sich anzuhängen

Ich möchte den Inhalt des Vektors duplizieren und möchte, dass sie am Ende des ursprünglichen Vektors angehängt werden, dh v[i]=v[i+n] for i=0,2,…,n-1 Ich bin auf der Suche nach einem schönen Weg, nicht mit einer Schleife. Ich sah std::vector::insert aber die iterative Version verbietet einen Iterator zu *this (dh Verhalten ist nicht definiert). Ich habe auch […]

Wie funktioniert #include in C ++?

Ich habe aus einem Codeforces- Blog gelesen, dass, wenn wir #include in einem C++ Programm enthalten, keine anderen Header-Dateien enthalten sein müssen. Wie funktioniert #include und ist es in #include es zu verwenden, anstatt einzelne Header-Dateien #include ?

initializer_list und move semantics

Darf ich Elemente aus einer std::initializer_list ? #include #include template void foo(std::initializer_list list) { for (auto it = list.begin(); it != list.end(); ++it) { bar(std::move(*it)); // kosher? } } Da std::intializer_list besondere Aufmerksamkeit des Compilers erfordert und keine std::intializer_list wie normale Container der C ++ – Standardbibliothek hat, wäre ich eher sicher als Nachsicht und […]