Ich versuche, die Elemente eines Vektors (s1) in einen anderen Vektor (s2), an einem bestimmten Punkt einzufügen. Als Beispiel dieses mit dem ProgrammC++: Iterator aus Vektor zurückgeben :: einfügen
#include <vector>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
vector<string> s1;
s1.push_back("Hi");
s1.push_back("there!");
vector<string> s2;
s2.push_back("How");
s2.push_back("are");
s2.push_back("you?");
vector<string>::iterator it = s2.begin();
s2.insert(it, s1.begin(), s1.end());
return 0;
}
jedoch erreicht ist, wenn ich den Befehl insert den Iterator des ersten eingeführte Element zurückkehren wollen, war ich unter dem Eindruck, sollte dieser Befehl
arbeitenit = s2.insert(it, s1.begin(), s1.end());
aber ich die Kompilierung-Fehlermeldung
vector_insert.cc:20:8: error: no match for ‘operator=’ (operand types are ‘std::vector<std::__cxx11::basic_string<char> >::iterator {aka __gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*, std::vector<std::__cxx11::basic_string<char> > >}’ and ‘void’)
it = s2.insert(it, s1.begin(), s1.end());
Warum funktioniert der Compiler denken Einsatz eine Lücke Rückkehr hat, wenn diese Seite einen Iterator return (http://en.cppreference.com/w/cpp/container/vector/insert) zeigt . Beachten Sie, dass dieses Beispiel ist trivial, weil ich mit
it = s2.begin();
den Iterator auf das anfängliche eingeführte Element bekommen könnte, aber dies würde im Allgemeinen