Angenommen, wir erhalten std::vector<T> V
und einen Iterator p
an einer Position innerhalb des Vektors.Resize-Vektor mit einem Iterator in C++
Q1: Was ist ein guter Weg, um einen neuen Vektor zurück w
, für die die angegebene Iterator p
std :: end (w)?
Ich könnte einen neuen Vektor w
erstellen, verschiebe die Elemente von std :: begin (v) zu und weise p = std::end(w)
zu.
Q2: Gibt es eine Möglichkeit zu tun, was ich will, aber halten p
const
?
Der Ursprung meiner Frage ist folgender: Ich habe einen Vektor, für den ich std::remove(std::begin(v),std::end(v), elem)
bewarb. Dies sollte alle Elemente, die ungleich elem
sind, zurückgeben und einen Iterator an das Ende dieses Bereichs zurückgeben. Ich möchte den Vektor dort schneiden.
Sie können keine * neu * Vektor zurückzukehren, weil Der Iterator ist nur für den gegebenen Vektor gültig. Wenn Sie jedoch den vorhandenen Vektor ändern möchten, können Sie einfach 'V.erase (p, V.end())' aufrufen. –
Warum denkst du, dass du das machen willst? –
@LightnessRacesinOrbit Erweitern Sie die Frage mit den Gründen – myfirsttime1