vector::insert
-
Ich möchte in einem Vektor die Stellen 1 bis 9 mit einem bestimmten Wert belegen ohne dass dieser iteriert wird. Geht es auch ohne dass ich dafür ein extra Array anlegen muss?
-
Wie meinst du das genau und wie sieht die Lösung mit dem extra Array aus?
-
du kannst den Standardwert beim Initialisieren festlegen:
std::vector<double> myVector(9, 1234.56);Wenn der vector bereits existiert und du nur einen bestimmten Bereich neu setzen willst, fällt mir dazu nichts Schlaues ein. Ohne Iterieren in irgendeiner Form wird das nicht gehen.
-
std::fill(vec.begin()+1, vec.begin()+10, 1234.56);
-
stan phil schrieb:
std::fill(vec.begin()+1, vec.begin()+10, 1234.56);So in etwa meinte ich das, danke. Allerdings frage ich mich grade:
Es gibt ja auch das hier:
myvector.insert (it+2,anothervector.begin(),anothervector.end());Könnte man es nicht auch so verwenden?
-
Was ist den mit dem Element bei Index 0? Hat das schon den Wert den es haben soll? Bekommt es seinen Wert später oder ist dessen Wert egal?
-
Namal schrieb:
Könnte man es nicht auch so verwenden?
klar geht das. Aber du wolltest doch explizit eine Lösung ohne zweiten vector...
-
daddy_felix schrieb:
Namal schrieb:
Könnte man es nicht auch so verwenden?
klar geht das. Aber du wolltest doch explizit eine Lösung ohne zweiten vector...
Ja das hab ich so von cplus.com übernommen sorry. Ich meine so:
myvector.insert (Wert,0,9);Also da werden mir meterweise Fehlermeldungen ausgespuckt. Man kann es also unter expliziter Angabe von den Indizes, die das Intervall markieren, nicht verwenden?
-
Namal schrieb:
Also da werden mir meterweise Fehlermeldungen ausgespuckt. Man kann es also unter expliziter Angabe von den Indizes, die das Intervall markieren, nicht verwenden?
insert erwartet zwei Iteratoren, keine Indizes. Deshalb geht das nicht.
-
Namal schrieb:
daddy_felix schrieb:
Namal schrieb:
Könnte man es nicht auch so verwenden?
klar geht das. Aber du wolltest doch explizit eine Lösung ohne zweiten vector...
Ja das hab ich so von cplus.com übernommen sorry. Ich meine so:
myvector.insert (Wert,0,9);Also da werden mir meterweise Fehlermeldungen ausgespuckt. Man kann es also unter expliziter Angabe von den Indizes, die das Intervall markieren, nicht verwenden?
Guck dir nochmal eine vernünftige Referenz an:
http://www.cplusplus.com/reference/vector/vector/insert/
Denk dran, dass insert einfügt, nicht beschreibt.