1
返回迭代器我試圖插入一個向量(s1)到一個不同的向量(s2),在一個指定的點的元素。作爲一個例子,這是用程序實現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());
然而
我收到編譯錯誤
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返回時,該頁面顯示的迭代器返回(http://en.cppreference.com/w/cpp/container/vector/insert) 。注意,這個例子很簡單,因爲我能得到的迭代初始插入的元素與
it = s2.begin();
但這不是一般