关于algorithm中的set_intersection的使用问题(有示例代码)

blldw 2006-10-13 08:56:58
使用set_intersection,下面代码运行异常:
#include <iostream>
#include <vector>
#include <algorithm>

int main()
{
typedef std::vector<int> VI;
VI v1, v2, v3;

for (int i = 0; i < 5; i++)
v1.push_back(i);

for (int j = 2; j < 7; j++)
v2.push_back(j);

std::sort(v1.begin(), v1.end());
std::sort(v2.begin(), v2.end());
std::set_intersection(v1.begin(), v1.end(), v2.begin(), v2.end(), v3.begin());
VI::iterator it;
for (it = v3.begin(); it != v3.end(); it++)
std::cout << *it << " ";
std::cout << std::endl;

return 0;
}
什么原因?
...全文
352 点赞 收藏 3
写回复
3 条回复
Jokar 2006年10月13日
ls的对~ 偶得不对 ~ lz用楼上的吧~
回复 点赞
sinall 2006年10月13日
std::set_intersection(v1.begin(), v1.end(), v2.begin(), v2.end(), v3.begin());
->
#include <iterator>

std::set_intersection(v1.begin(), v1.end(), v2.begin(), v2.end(), std::back_inserter(v3));
回复 点赞
Jokar 2006年10月13日
The destination range should not overlap either of the source ranges and should be large enough to contain the destination range.

---------------------------
这个好像v3应该有预设空间的~

改为VI v1, v2, v3(20);
回复 点赞
发动态
发帖子
C++ 语言
创建于2007-09-28

3.1w+

社区成员

24.8w+

社区内容

C++ 语言相关问题讨论,技术干货分享
社区公告
暂无公告