为什么编译器在 set_intersection 上给出错误?
我有一个具有两个属性的类:
set< int > ens1_;
set< int > ens2_;
现在,我有一个方法可以找到这两个集合之间的交集。这是我在方法中写的内容:
set< int > ens;
set< int >::iterator it;
it = set_intersection(ensEntier1_.begin(), ensEntier1_.end(), ensEntier2_.begin(), ensEntier2_.end(), ens.begin());
return ens;
它在 stl_algo.h 内编译时给我一个错误,但我不知道从哪里开始纠正错误
谢谢您的时间
艾蒂安
I have a class which has two attributes :
set< int > ens1_;
set< int > ens2_;
Now, I have a method which finds the intersection between these two sets. Here is what I wrote in my method:
set< int > ens;
set< int >::iterator it;
it = set_intersection(ensEntier1_.begin(), ensEntier1_.end(), ensEntier2_.begin(), ensEntier2_.end(), ens.begin());
return ens;
It gives me an error at compile inside the stl_algo.h but I don't know from where to start to correct the error
Thank you for your time
Etienne
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
如果使用容器的本机迭代器,则
set_intersection
必须写入序列容器(例如vector
),而不是关联容器(例如set
)。试试这个:
set_intersection
must write to a sequence container such asvector
, not an associative container such asset
, if the container's native iterators are used.Try this:
您调用的
set_intersection
重载的第五个参数需要一个输出迭代器;ens.begin()
确实不返回输出迭代器。请尝试以下操作:注意:请确保您
#include
。The 5th argument to the
set_intersection
overload you're calling expects an output iterator;ens.begin()
does not return an output iterator. Try this instead:Note: make sure you
#include <iterator>
.看来您需要对结果使用类似于
insert_iterator
的东西。目前还不清楚您传递给
set_intersection
的ensEntier1_
和ensEntier2_
如何对应于ens1_
和ens2_
,但目前我假设他们这样做。编辑:这是一个工作示例:
It looks like you need to use something like an
insert_iterator
for your result.It's also unclear how the
ensEntier1_
andensEntier2_
you're passing toset_intersection
correspond toens1_
andens2_
, but for the moment I'll assume they do.Edit: here's a working example: