Was ist die richtige Verwendung von C ++ 11 for? Welche Syntax sollte verwendet werden? for (auto elem : container)oder for (auto& elem : container)oder for (const auto& elem : container)? Oder irgendein anderes?
Eclipse 3.7.1 CDT 1.4.1 GCC 4.6.2 Dies ist ein Beispiel für einen Teil des C ++ 11-Codes: auto text = std::unique_ptr<char[]>(new char[len]); Der Eclipse-Editor beschwert sich über: Function 'unique_ptr' could not be resolved Die Makefile-Kompilierung funktioniert einwandfrei. Wie kann Eclipse aufhören, sich über diese Art von Fehlern zu beschweren?
Ist es möglich, eine Lambda-Funktion als Funktionszeiger zu übergeben? Wenn ja, muss ich etwas falsch machen, weil ich einen Kompilierungsfehler erhalte. Betrachten Sie das folgende Beispiel using DecisionFn = bool(*)(); class Decide { public: Decide(DecisionFn dec) : _dec{dec} {} private: DecisionFn _dec; }; int main() { int x = 5; …
Es wird manchmal behauptet, dass C ++ 11/14 Ihnen eine Leistungssteigerung bringen kann, selbst wenn Sie lediglich C ++ 98-Code kompilieren. Die Begründung erfolgt normalerweise in Anlehnung an die Bewegungssemantik, da in einigen Fällen die rvalue-Konstruktoren automatisch generiert werden oder jetzt Teil der STL sind. Jetzt frage ich mich, ob …
Jeder Standard - Container hat ein beginund endVerfahren für Iteratoren für diesen Behälter zurückkehrt. C ++ 11 hat jedoch anscheinend freie Funktionen eingeführt, die aufgerufen werden std::beginund std::enddie die Funktionen beginund endmember aufrufen . Also anstatt zu schreiben auto i = v.begin(); auto e = v.end(); du würdest schreiben auto …
Soll dies das Beispiel sein: #include <iostream> using namespace std; int main() { cout << "Hola, moondo.\n"; } Es wirft den Fehler: gcc -c main.cpp gcc -o edit main.o main.o: In function `main': main.cpp:(.text+0xa): undefined reference to `std::cout' main.cpp:(.text+0xf): undefined reference to `std::basic_ostream<char,std::char_traits<char> >& std::operator<< <std::char_traits<char>>(std::basic_ostream<char, std::char_traits<char> >&, char const*)' …
Mit dem neuen Standard gibt es neue Wege, Dinge zu tun, und viele sind schöner als die alten Wege, aber der alte Weg ist immer noch in Ordnung. Es ist auch klar, dass der neue Standard aus Gründen der Abwärtskompatibilität offiziell nicht sehr abwertet. Die Frage bleibt also: Welche alten …
Warum hat die Umkehrfunktion für die std::listKlasse in der C ++ - Standardbibliothek eine lineare Laufzeit? Ich würde denken, dass für doppelt verknüpfte Listen die Umkehrfunktion O (1) gewesen sein sollte. Das Umkehren einer doppelt verknüpften Liste sollte nur das Umschalten der Kopf- und Endzeiger beinhalten.
Wenn ich eine Variable in einer Funktion habe (z. B. ein großes Array), ist es sinnvoll, beide staticund zu deklarieren constexpr? constexprgarantiert, dass das Array zur Kompilierungszeit erstellt wird, wäre das staticalso nutzlos? void f() { static constexpr int x [] = { // a few thousand elements }; // …
Ich habe meine C ++ - Kenntnisse vor einigen Jahren ins Regal gestellt und es scheint, dass sich die Landschaft geändert hat, wenn ich sie jetzt wieder brauche. Wir haben jetzt C ++ 11 und ich verstehe, dass es viele Boost-Funktionen überlappt. Gibt es eine Zusammenfassung, wo diese Überschneidungen liegen, …
[dcl.attr.noreturn] bietet das folgende Beispiel: [[ noreturn ]] void f() { throw "error"; // OK } aber ich verstehe nicht, worum es geht [[noreturn]], weil der Rückgabetyp der Funktion bereits ist void. Was ist der Sinn des noreturnAttributs? Wie soll es verwendet werden?
Ich frage mich warum cbeginund cendwurden in C ++ 11 eingeführt? Was sind Fälle, in denen der Aufruf dieser Methoden einen Unterschied zu konstanten Überladungen von beginund macht end?
Mit dem neuen Standard (und Teilen, die bereits in einigen Compilern verfügbar sind) soll der neue Typ std::unique_ptrein Ersatz für sein std::auto_ptr. Überlappt sich ihre Verwendung genau (damit ich meinen Code global suchen / ersetzen kann (nicht, dass ich dies tun würde, aber wenn ich es tun würde)) oder sollte …
Ich habe diesen Code, der nicht funktioniert, aber ich denke, die Absicht ist klar: testmakeshared.cpp #include <memory> class A { public: static ::std::shared_ptr<A> create() { return ::std::make_shared<A>(); } protected: A() {} A(const A &) = delete; const A &operator =(const A &) = delete; }; ::std::shared_ptr<A> foo() { return A::create(); …
Ich möchte ein static const charArray in meiner Klasse haben. GCC beschwerte sich und sagte mir, ich solle es verwenden constexpr, obwohl es mir jetzt sagt, dass es eine undefinierte Referenz ist. Wenn ich das Array zu einem Nichtmitglied mache, wird es kompiliert. Was ist los? // .hpp struct foo …
We use cookies and other tracking technologies to improve your browsing experience on our website,
to show you personalized content and targeted ads, to analyze our website traffic,
and to understand where our visitors are coming from.
By continuing, you consent to our use of cookies and other tracking technologies and
affirm you're at least 16 years old or have consent from a parent or guardian.