Ein vector<int>(v1)
Ausdruck fehlschlagen ergibt sich ein temporäres Objekt, und kann auf der rechten Seite von operator=
gestellt werden, aber wenn wir einen vector<int>(v1)
Ausdruck als Anweisung verwenden, wird es nicht in Visual Studio 2010 10.0.30319.1 RTMRel. Detaillierte Fehlerinformationen sind in den Kommentaren im folgenden Code enthalten. Warum passiert das?Warum die Aussage „Vektor <int> (v1),“
vector<int> v1;
v1.push_back(10);
v1.push_back(20);
v1.push_back(30);
vector<int> v3 = vector<int>(v1); //OK, deliberately code like this.
vector<int>(v1); //error C2086: “std::vector<_Ty> v1”: redefinition
In dem Buch „C++ Coding Standards: 101 Regeln, Richtlinien und Best Practices“, Kapitel 82 "die akzeptierten Idiome verwenden wirklich Kapazität zu schrumpfen und wirklich Elemente löschen". Es gibt eine Erklärung ab:
container<_Type>(c).swap(c);
Ich verstehe nicht, und will nur container<_Type>(c)
testen, was bedeutet es?
Bitte verwenden Sie vier Leerzeichen vor den Codezeilen, um sie als Code zu markieren und Zeilenumbrüche hinzuzufügen (für zukünftige Beiträge, da @Yu Hao bereits Ihren aktuellen Beitrag bearbeitet hat) – Thomas
"wenn wir' vector (v1) 'expression als a verwenden Aussage, [es scheitert] "- ok, aber warum willst du das tun? Was willst du erreichen? –
Warum glauben Sie, dass es eine gültige Aussage ist? Welchen Effekt erwarten Sie? – kfsone