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币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
C++学习笔记 --- STL练习合并merge函数
C++学习笔记 --- STL练习合并merge函数
STL算法(Algorithms):合并(Merge)
1、merge:将两个序列合并成一个新的序列,并对新的序列排序 原型: template   OutputIterator merge ( InputIterator1 first1, InputIterator1 last1,                          InputIterator2 first2, InputIterator2 last2,OutputItera
C++ - 标准库 "merge" 函数 的 用法及代码
标准库 "merge" 函数 的 用法及代码   merge() 是 C++ 标准库的函数, 主要实现函数的排序和合并, 不仅仅是合并, 具体要求参照标准库. 网址: http://www.cplusplus.com/reference/algorithm/merge/?kw=merge 如果是通用方法, 则第二个容器依然存在; 如果是链表方法, 则第二个容器被破坏, 存入第一个容器.
STL源码剖析——STL算法之merge合并算法
本文介绍的STL算法中的merge合并算法,源码中介绍了函数merge、inplace_merge。并对这些函数的源码进行详细的剖析,并适当给出使用例子。
C++ STL Merge的用法
merge函数的作用是:将两个有序的序列合并为一个有序的序列。函数参数:merge(first1,last1,first2,last2,result,compare); //firs1t为第一个容器的首迭代器,last1为第一个容器的末迭代器,first2为第二个容器的首迭代器,last2为容器的末迭代器,result为存放结果的容器,comapre为比较函数(可略写,默认为合并为一个升序序列)
【STL源码剖析读书笔记】【第6章】算法之inplace_merge算法
1、  inplace_merge()函数将两个连接在一起的排序序列[first, middle)和[middle, last)结合成单一序列并保持有序。inplace_merge()函数是stable操作。 2、  inplace_merge()版本一的源代码,只讨论了有暂时缓冲区的情况 template inline void inplace_merge(BidirectionalIte
stl merge使用
<br />#include <cstdlib> #include <iostream> #include <list> #include <iterator> #include <vector> #include <algorithm> #include <string> using namespace std; typedef struct _NODE { int id; string str; _NODE(int id, string str
STL algorithm算法merge(34)
merge原型: std::merge default (1) template OutputIterator merge (InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2,
STL copy()函数用法
闲言少叙,上代码: #include #include #include using namespace std; int main () { int src[]= {1, 2, 3, 4, 5, 6, 7}; // vector srcVec; // srcVec.resize(7); 或者 vector srcVec(src, src + 7); //
关于C++标准库泛型算法merge的学习笔记
#include #include #include #include #include #include using namespace std;int main(int argc, char *argv[])     { std::ostream_iterator ost_iter(cout," "); list lst1; for(int i = 0;i  lst1.push_back(