C++ mit STL-Liste, wie das kopieren einer bestehenden Liste in eine neue Liste
Jetzt arbeite ich mit einem copy-Konstruktor für die Aufnahme einer Liste namens val des Typs char, und ich brauche, um all die Elemente einer string-v übergeben wird, in den copy-Konstruktor und setzen Sie Sie in die val Liste.
Public:
LongInt(const string v);
Private:
list<char> val;
Also hier im öffentlichen Bereich des LongInt-Klasse, ich habe einen copy-Konstruktor, welche die val-Liste und Kopien der v-string hinein. Kann mir jemand helfen herauszufinden, wie dies zu tun? Vielen Dank im Voraus!
Möchten Sie vielleicht denken über die Wahl einer Liste von chars ist wirklich die am besten geeigneten Behälter verwenden. Es Fragmente der Erinnerung sehr stark, als auch die, die schon einen großen Aufwand.
LongInt(const string v);
ist nicht eine Kopie-Konstruktor.InformationsquelleAutor Ctak | 2011-04-04
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
In Ihrem
LongInt
Konstruktor verwenden Sie einfach dieiterator, iterator
list
Konstruktor:LongInt(const string v) : val(v.begin(), v.end()) { }
Dass gesagt wird, haben Sie sich überlegt, tatsächlich mit
string
oder möglicherweisedeque<char>
zu manipulieren, Ihre Sequenz und nicht alslist
? Je nach Ihren Bedürfnissen, diese alternativen könnten besser sein.Die Signatur sollte geändert werden, um
const string & v
, um zu verhindern, dass eine unnötige Kopie. Auch scheint es seltsam zu wählendeque
hier. Einvector
hat viel weniger overhead.InformationsquelleAutor Mark B
Haben Sie zum Durchlaufen der Schnur und extrahieren Sie die Daten Zeichen für Zeichen. Mit der
std::copy
Algorithmus arbeiten soll:InformationsquelleAutor Timo Geusch
InformationsquelleAutor f4.
Verwenden Sie zuerst
std::string
wenn es sich um einen string, du bist zu speichern. Es ist ein container wie jeder andere. Wenn Sie nicht können oder nicht wollen, um zu speichern eine Zeichenfolge, verwenden Siestd::vector
. Aber das würde einkochen zu einer weniger funktionalenstd::string
sowieso, so dass nurstd::string
.Für das kopieren:
Aber nur mit einem
std::string
wenn es eine Liste derchar
s Sie speichern.InformationsquelleAutor rubenvb