使用复印功能打印集
Printing set using the copy function
我遇到的问题是,我需要使用copy函数打印union_set函数的结果集。(所以我不允许把输出作为set_union函数的最后一项)。对于最后一个AunionB指针,我似乎无法使copy函数正常工作(我还必须再做几次)。我目前所做的只是我最后一次尝试答案,尽管我尝试了更多的事情。我在复制功能上做错了什么?这是代码。
#include <iostream>
#include <iterator>
#include <set>
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
int setA[5] = {2, 4, 5, 7, 8};
int setB[7] = {1, 2, 3, 4, 5, 6, 7};
int setC[5] = {2, 5, 8, 8, 15};
int setD[6] = {1, 4, 4, 6, 7, 12};
set<int> set2A(setA,setA+5);
set<int> set2B(setB,setB+7);
set<int> set2C(setC,setC+5);
set<int> set2D(setD,setD+6);
int AunionB[12];
int AunionC[10];
int BunionD[13];
int AintersectB[12];
int AintersectC[10];
set<int> finalUnion;
set<int> finalIntersection;
set<int> final2Union;
set<int> final2Intersection;
set<int> final2Difference;
ostream_iterator< int > output( cout, " " );
int *lastAunionB;
int *lastAunionC;
int *lastBunionD;
int *lastAintersectB;
int *lastAintersectC;
cout << "setA = ";
copy(set2A.begin(), set2A.end(), output);
cout << endl;
cout << "setB = ";
copy(set2B.begin(), set2B.end(), output);
cout << endl;
cout << "setC = ";
copy(set2C.begin(), set2C.end(), output);
cout << endl;
cout << "setD = ";
copy(set2D.begin(), set2D.end(), output);
cout << endl;
//here is where the problem lies
cout << "AunionB = ";
lastAunionB = set_union(setA, setA+5, setB, setB+7, AunionB);
copy(lastAunionB, lastAunionB, output);
cout << endl;
/*
cout << "AunionC = ";
set_union(setA, setA+5, setC, setC+5, AunionC);
cout << endl;
cout << "BunionD = ";
set_union(setB, setB+7, setD, setD+6, BunionD);
cout << endl;
cout << "AintercectB = ";
set_intersection(setA, setA+5, setB, setB+7, AintersectB);
cout << endl;
cout << "AintercectC = ";
set_intersection(setA, setA+5, setC, setC+7, AintersectC);
cout << endl;
*/
return 0;
}
lastAunionB = set_union(setA, setA+5, setB, setB+7, AunionB);
copy(lastAunionB, lastAunionB, output);
传递给set_union
的最后一个参数将对应于构造的新集合的范围的开始。set_union
的返回值将是该范围的末尾。
您希望lastAunionB
和其他原始指针以及您作为迭代器传递的几乎所有内容都用类型std::set<int>::iterator
定义,并且您希望在如下范围内复制:
std::copy(AunionB, lastAunionB, output);
您正试图从一个空区域进行复制。
copy(ptr,ptr,output);
永远不会打印任何内容。
相关文章:
- 打印功能无法正常工作 - 链表
- 阵列打印功能
- 为什么我的打印功能不起作用?链表
- 为什么我的打印功能之一删除节点
- 打印功能不会终止
- 如何正确格式化此打印功能
- 使用for_each从对象列表中调用打印功能
- 打印功能的地址..声明
- 作为参数传递的打印功能指针导致屏幕上打印"1"
- 无效打印功能错误
- 尽管具有打印功能,但我的矢量无法打印
- 我在双链表上的此打印功能时遇到问题
- 二进制树级别明智的打印功能不起作用
- 需要使班级(long_number)用构造函数和一个打印功能代表1到60的任何长度
- 我的链接列表打印功能进入无限循环
- 一个人可以使用clang ast使用名称打印功能指针的质量
- 如何实现打印功能
- 如何禁用打印功能
- 一个奇怪的打印功能错误
- 为什么我的打印功能为我的Postfix程序产生此错误