Initialisieren von array-oder Vektor-über-Konstruktor initialisieren Liste
Wie kann ich die initialisieren einer (string -) array oder einen Vektor mit einem Konstruktor initialisiert die Liste in C++?
Betrachten Sie bitte dieses Beispiel, wo ich will und initialisiert ein string-array mit Argumenten an den Konstruktor:
#include <string>
#include <vector>
class Myclass{
private:
std::string commands[2];
//std::vector<std::string> commands(2); respectively
public:
MyClass( std::string command1, std::string command2) : commands( ??? )
{/* */}
}
int main(){
MyClass myclass("foo", "bar");
return 0;
}
Außerdem, welche der beiden Typen (array vs Vektor) wird empfohlen, zum speichern von zwei strings, während Sie ein Objekt erstellen, und warum?
Verwenden Sie Klammern, wie Sie es normalerweise tun würden.
Wie in
Einer von denen wird nicht initialisiert die Mitglieder, während der andere angezeigt wird schön in Vaughn ' s Antwort.
Ja, das war in etwa was ich wollte. 😉
Wie in
Myclass m = {"hello", "world"};
oder wie in Myclass(const std::string& c1, const std::string& c2) : commands{c1, c2}{}
?Einer von denen wird nicht initialisiert die Mitglieder, während der andere angezeigt wird schön in Vaughn ' s Antwort.
Ja, das war in etwa was ich wollte. 😉
InformationsquelleAutor fotinsky | 2013-10-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mit C++11, Sie tun es so:
Pre-C++11 Compiler, müssen Sie Sie initialisieren das array oder Vektor in den Körper des Konstruktors:
oder
Habe ich erweiterte meine Antwort auf cover-pre-C++11 Compiler.
was wäre wenn ich mit C++11 Compiler und definieren ein eigenes Mitglied
std::vector<std::string> commands;
wie Sie sich in der pre-C++ - Beispiel? Gibt es einen schnelleren Weg zum initialisierencommands
?ja. Es ist genau das gleiche so oder so.
InformationsquelleAutor Vaughn Cato
In der Initialisierungsliste können Sie sich telefonisch an jedem Konstruktor der Klasse des Mitglieds, das Sie initialisieren möchten. Werfen Sie einen Blick auf
std::string
undstd::vector
Dokumentation und wählen Sie den Konstruktor, der für Sie arbeitet.Für die Speicherung von zwei Objekten würde ich empfehlen, mit
std::pair
. Allerdings, wenn Sie erwarten, dass die Zahl wachsen kannstd::vector
ist die beste option.InformationsquelleAutor Ivaylo Strandjev
Könnten Sie
InformationsquelleAutor titus
InformationsquelleAutor anbu selvan