ベクトル(s1)の要素を、指定した点の別のベクトル(s2)に挿入しようとしています。私はINSERTコマンドが最初に挿入された要素のイテレータを返すようにしたい場合の例としては、これは、C++:vector :: insertからイテレータを返す
#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;
}
しかしプログラムによって実現され、私は、このコマンドが動作するはず印象の下にあった
it = s2.insert(it, s1.begin(), s1.end());
このページは、イテレータリターン(
http://en.cppreference.com/w/cpp/container/vector/insert)を示している場合
は、しかし、私は、コンパイルエラーが発生する
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());
はなぜコンパイラは、インサートがvoidリターンを持っていると思うん。私は
it = s2.begin();
で初期挿入された要素にイテレータを取得する可能性があるため、この例では簡単ですが、これは私の質問を書くという行為は、私は(と答えを見つける助け一般