std::vector und std::copy
-
ich hab mal ne frage, ob man copy so verwenden kann:
vector<Vertex> Vertices; //vertex ist ein array einer struktur std::copy(Vertex,Vertex+n,Vertices.begin()); //bzw std::copy(Vertex,Vertex+n,Vertices.end());
wird bei copy dann auch im zweifelsfall der vector erweitert, oder würde man gefahr laufen, ins "nichts" zu schreiben?
ich hab in der hilfe gesucht, hab dazu aber nichts gefunden.
-
nein, der Vektor wird nicht erweitert. guck dir mal back_inserter an.
-
Hallo,
Nein, dann soltest du back_inserter benutzen um an einen geeigneten inputiterator zu kommen.
vector<Vertex> Vertices; //vertex ist ein array einer struktur std::copy(Vertex,Vertex+n,std::back_inserter(Vertices));
[Edit] Och man, imma zu langsam
-
puuh, dann habt ihr mich ja vor nem riesigen fehler bewahrt
//edit back_inserter funktioniert aber nur am ende,gibts auch nen speziellen iterator, der auch am anfang funktioniert, oder reicht dort der normale insert_iterator?
-
Es gibt genauso front_inserter, allerdings nur bei Containern, die ein push_front() anbieten! Vector scheidet damit also aus.
-
Vertices.insert(Vertices.begin(), Vertex, Vertex+n);
geht aber auch und ist ggf. sogar effektiver als copy
-
Wenn Vertices leer ist könnte man auch assign verwenden.
-
tag schrieb:
geht aber auch und ist ggf. sogar effektiver als copy
Unwahrscheinlich. Aber effizienter :p
-
http://mr-check.xipolis.net/8654431e9f2191fe8a2e31c984974cfb/v2.0/Mrcheck.php?CID=duden&SB=effizient
http://mr-check.xipolis.net/2f5d5ad045e765dff3d96da4fd69356e/v2.0/Mrcheck.php?CID=duden&SB=effektiv
Naja, so groß ist der Unterschied nun auch wieder nicht