c++ - C++ STL-插入器
问题描述
我是 C++ STL 的新手。我在下面的代码中有一些关于输出的问题。为什么这没有提供预期的输出?
#include<iostream>
#include<algorithm>
#include<vector>
#include<iterator>
using namespace std;
void show(vector<int> vect)
{
for(int i=0;i<vect.size();i++)
{
cout<<vect[i]<<" ";
}
}
int main()
{
int arr[5]={ 1, 2, 3, 4, 5 };
vector<int> vect1(arr,arr+5);
vector<int>::iterator it;
it=vect1.begin();
advance(it,3);
copy(vect1.begin(),vect1.end(),inserter(vect1,it));
show(vect1);
return 0;
}
预期输出:1 2 3 1 2 3 4 5 4 5
实际输出:1 2 3 1 0 3 4 5 4 5
谁能帮我找出哪里出了问题?
解决方案
用这个替换副本:
vect1.insert(it, std::begin(arr), std::end(arr));
其中要插入的参数是:
it
是要插入向量 vect1 的位置;
std::begin(arr)
是要插入的范围的起始位置;
std::end(arr)
是要插入的范围的结束位置。