C++ - kopieren von string array [], um ein vector <string>
Also ich mache diese Klasse eine member-Funktion "einfügen", um das kopieren aus einem string-array der Klassen Inhalte, die ein Vektor-array.
Diese Abbrechen, Fehler taucht immer wieder sagen, ich werde vorbei an der Vector end, aber ich verstehe nicht warum....
Hier der code:
/////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////// Map class /////////////////////
class Map
{
private:
/////////////////////////////////////////// Map Variables ///////////////
string _name;
vector <string> _contents;
public:
Map(string name){_name = name;
_contents.reserve(56);};
~Map(){};
string getName()
{
return _name;
};
vector <string> getContents()
{
return _contents;
};
/////////////////////////////////////////// Insert ////////////////////////
// string* to an array of 56 strings;
bool Insert(string* _lines_)
{
for (int I = 0; I < 3; I++)
{
_contents[I] = _lines_[I];
}
return true;
};
};
Wenn Sie brauchen Sie mehr Infos, einfach Fragen! Dank!
InformationsquelleAutor Griffin | 2011-04-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Tatsächlich, brauchen Sie nicht, kopieren Sie Sie selbst. Sie können
std::vector::assign
konvertierenc-style array
zu einemstd::vector
.vector::assign
Weist neue Inhalte auf das vector-Objekt, das löschen aller Elemente im Vektor vor dem Aufruf und ersetzen Sie durch diejenigen, spezifiziert durch die Parameter.
Beispiel
Mehr details
http://www.cplusplus.com/reference/stl/vector/assign/
InformationsquelleAutor Eric Z
Verwenden
std::copy
:wo
count
ist die Gesamt-Anzahl der strings in dem array. Wenn die Gesamtanzahl der Saiten ist56
, diecount
sollte56
, nicht55
(wenn Sie möchten, dass alle strings kopiert werden, um_contents
).InformationsquelleAutor Nawaz
Den Vektor nicht über eine Größe (nur etwas Platz
reserve
Hrsg.).Haben Sie entweder zu
resize()
den vector, oder verwenden Siepush_back()
zum hinzufügen der neuen Elemente.InformationsquelleAutor Bo Persson
Sollten Sie die Größe
vector <string> _contents
bevor Sie hinzufügen können alle Elemente mit dem subscript operator [].Außerdem: eine Standard-Konstruktor Ihre Map-Klasse.
InformationsquelleAutor jack_carver
_name
in der Initialisierungsliste:Map(string name) : _name(name) {
_contents
hat genug Kapazität für 56 Elemente, hat aber keine tatsächlichen Elemente. Sollten Sie entweder die Größe ändern (_contents.resize(56);
), Elemente hinzufügen, um es in dieInsert
Methode (_contents.push_back(_lines_[I]);
) oder bauen Sie es mit genügend Kapazität (hinzufügen, _contents(56)
zu der Initialisierungsliste).InformationsquelleAutor Pablo