Als «c++11» getaggte Fragen

Verwenden Sie dieses Tag für Code, der als C ++ 11 kompiliert werden muss (ohne die in C ++ 14 oder höher eingeführten Funktionen zu verwenden).

5
Verwenden einer externen Vorlage (C ++ 11)
Abbildung 1: Funktionsvorlagen TemplHeader.h template<typename T> void f(); TemplCpp.cpp template<typename T> void f(){ //... } //explicit instantation template void f<T>(); Main.cpp #include "TemplHeader.h" extern template void f<T>(); //is this correct? int main() { f<char>(); return 0; } Ist dies die richtige Verwendung extern templateoder verwende ich dieses Schlüsselwort nur für …
116 c++  templates  c++11  extern 

4
Vermeiden Sie if-Anweisungen in einer for-Schleife?
Ich habe eine Klasse namens Writer, die eine Funktion writeVectorwie folgt hat: void Drawer::writeVector(vector<T> vec, bool index=true) { for (unsigned int i = 0; i < vec.size(); i++) { if (index) { cout << i << "\t"; } cout << vec[i] << "\n"; } } Ich versuche, keinen doppelten Code …



3
Was ist der Vorteil der Verwendung von Weiterleitungsreferenzen in bereichsbasierten for-Schleifen?
const auto&würde ausreichen, wenn ich schreibgeschützte Operationen ausführen möchte. Ich bin jedoch darauf gestoßen for (auto&& e : v) // v is non-const ein paar Mal in letzter Zeit. Das wundert mich: Ist es möglich, dass in einigen dunklen Eckfällen die Verwendung von Weiterleitungsreferenzen im Vergleich zu auto&oder einen gewissen …


1
Wie würde man std :: forward für alle Argumente in einer variadischen Funktion aufrufen?
Ich habe gerade eine generische Objektfabrik geschrieben und die Boost-Präprozessor-Metabibliothek verwendet, um eine variable Vorlage zu erstellen (mit 2010 und ohne Unterstützung). Meine Funktion verwendet rval-Referenzen und std::forwardfür eine perfekte Weiterleitung, und es hat mich zum Nachdenken gebracht ... Wenn C ++ 0X herauskommt und ich einen Standard-Compiler habe, würde …


9
Was ist der beste Weg, um zwei oder mehr Container gleichzeitig zu durchlaufen?
C ++ 11 bietet mehrere Möglichkeiten zum Durchlaufen von Containern. Beispielsweise: Bereichsbasierte Schleife for(auto c : container) fun(c) std :: for_each for_each(container.begin(),container.end(),fun) Was ist jedoch die empfohlene Methode, um zwei (oder mehr) Container derselben Größe zu durchlaufen, um Folgendes zu erreichen: for(unsigned i = 0; i < containerA.size(); ++i) { …

4
Ist cout synchronisiert / threadsicher?
Im Allgemeinen gehe ich davon aus, dass Streams nicht synchronisiert sind. Es ist Sache des Benutzers, eine entsprechende Sperrung vorzunehmen. Erhalten Dinge wie couteine Sonderbehandlung in der Standardbibliothek? Das heißt, wenn mehrere Threads schreiben, coutkönnen sie das coutObjekt beschädigen? Ich verstehe, dass selbst wenn synchronisiert, Sie immer noch zufällig verschachtelte …
112 c++  gcc  c++11 

20
Wie können Sie die Elemente eines std :: tuple durchlaufen?
Wie kann ich über ein Tupel iterieren (mit C ++ 11)? Ich habe folgendes versucht: for(int i=0; i<std::tuple_size<T...>::value; ++i) std::get<i>(my_tuple).do_sth(); aber das funktioniert nicht: Fehler 1: Entschuldigung, nicht implementiert: 'Listener ...' kann nicht in eine Argumentliste mit fester Länge erweitert werden. Fehler 2: Ich kann nicht in einem konstanten Ausdruck …

8
Wie kann man den mt19937 PRNG prägnant, tragbar und gründlich aussäen?
Ich sehe viele Antworten, in denen jemand vorschlägt <random>, Zufallszahlen zu generieren, normalerweise zusammen mit Code wie diesem: std::random_device rd; std::mt19937 gen(rd()); std::uniform_int_distribution<> dis(0, 5); dis(gen); Normalerweise ersetzt dies eine Art "unheiligen Greuel" wie: srand(time(NULL)); rand()%6; Wir könnten den alten Weg kritisieren , indem wir argumentieren, dass er time(NULL)eine niedrige …
112 c++  c++11  random 


13
Wie kann ich mit C ++ "for" -Schleifen mit einer "if" -Bedingung vermeiden?
Bei fast dem gesamten Code, den ich schreibe, habe ich häufig Probleme mit der Reduzierung von Sätzen in Sammlungen, die letztendlich zu naiven "Wenn" -Bedingungen führen. Hier ist ein einfaches Beispiel: for(int i=0; i<myCollection.size(); i++) { if (myCollection[i] == SOMETHING) { DoStuff(); } } Mit funktionalen Sprachen kann ich das …
111 c++  c++11  c++14 

7
Erzwingen der Anweisungsreihenfolge in C ++
Angenommen, ich habe eine Reihe von Anweisungen, die ich in einer festen Reihenfolge ausführen möchte. Ich möchte g ++ mit Optimierungsstufe 2 verwenden, damit einige Anweisungen neu angeordnet werden können. Welche Werkzeuge hat man, um eine bestimmte Reihenfolge von Anweisungen durchzusetzen? Betrachten Sie das folgende Beispiel. using Clock = std::chrono::high_resolution_clock; …

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.