迭代器适配器
back_inserter函数模板,返回类型是back_insert_iterator
back_insert_iterator是类模板,底层调用了push_back函数
front_inserter函数模板,返回类型是front_insert_iterator
front_insert_iterator是类模板,底层调用了push_front函数
inserter函数模板,返回类型是insert_iterator
insert_iterator是类模板,底层调用了insert函数
void test()
{
vector<int> numberVec = {1, 5, 9, 5, 2};
list<int> numberList = {3, 7, 4, 9, 2};
//将list中的数据拷贝到vector,是在vector后面进行插入(底层实际上调用了push_back)
copy(numberList.begin(), numberList.end(), back_insert_iterator<vector<int>>(numberVec));
//将vector中的数据拷贝到list的前面,底层调用了push_front函数
copy(numberVec.begin(), numberVec.end(), front_insert_iterator<list<int>>(numberList));
set<int> numberSet = {3, 5, 8, 9, 12, 4, 6};
//将vector中的数据拷贝到set的中间
auto it = numberSet.begin();
++it;
//底层实际上调用了insert
copy(numberVec.begin(), numberVec.end(), insert_iterator<set<int>>(numberSet, it));
}