2 qq 34891390 qq_34891390 于 2016.05.05 19:58 提问

C++ STL的merge函数越界

小白想问问大神,用merge函数时一直报错,说iterator越界
代码如下:
#include
#include
#include
#include
using namespace std;

void display(vector &v)
{
for (vector::iterator it = v.begin(); it != v.end();++it)
{
cout<<*it<<endl;
}
cout<<endl;
}

int main()
{
vector v1,v2,v3;
for (int i =0; i<=2 ;++i)
{
v1.push_back(i);
}
for (int i =3; i<=7 ;++i)
{
v2.push_back(i);
}
for (int i =8; i<=10 ;++i)
{
v3.push_back(i);
}
merge(v1.begin(),v1.end(),v2.begin(),v2.end(),v3.begin());
display(v3);
system("pause");
return 0;
}

谢谢大神

2个回答

CSDNXIAOD
CSDNXIAOD   2016.05.05 20:02

C++ merge函数
[STL] list merge 函数
[STL] list merge 函数
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!

qq423399099
qq423399099   Ds   Rxr 2016.05.06 08:41

v3需要resize一下才行
PS:而且merge(v1.begin(),v1.end(),v2.begin(),v2.end(),v3.begin());这样用的话,v3前面的三个元素会被覆盖掉

 #include<iostream>
#include<vector>
#include<algorithm>  
using namespace std;
void display(vector<int> &v)
{
    for (vector<int>::iterator it = v.begin(); it != v.end();++it)
    {
        cout<<*it<<endl;
    }
    cout<<endl;
}
int main()
{
    vector<int> v1,v2,v3;
    for (int i =0; i<=2 ;++i)
    {
        v1.push_back(i);
    }
    for (int i =3; i<=7 ;++i)
    {
        v2.push_back(i);
    }
    for (int i =8; i<=10 ;++i)
    {
        v3.push_back(i);
    }
    v3.resize(11);
    merge(v1.begin(),v1.end(),v2.begin(),v2.end(),v3.begin());
    display(v3);
    system("pause");
    return 0;
}
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!