C++ 使用集合_相交,集合给出错误?

C++ 使用集合_相交,集合给出错误?,c++,c++11,C++,C++11,获取以下代码中的错误。。在第38行中,我遇到了错误,为什么我不知道,但我尝试了很多方法,但都没有解决问题。请使用集合交解决我的问题,集合给出错误 #include <iostream> #include <fstream> #include <algorithm> #include<set> using namespace std; #define now 5519 int main() { set<int> a[

获取以下代码中的错误。。在第38行中,我遇到了错误,为什么我不知道,但我尝试了很多方法,但都没有解决问题。请使用集合交解决我的问题,集合给出错误

#include <iostream>
#include <fstream>
#include <algorithm>
#include<set>
using namespace std;
#define now 5519    
int main()
{   
    set<int> a[now];
    set<float>dist[now];
    set<int>insect;
    //set<int> v(10);
    FILE *fwp=fopen("wp02","r");
    int w,at,dis;
    set<int>::iterator it;
    while(1)
    {
        if(fscanf(fwp,"%d",&w)==EOF)
        {
            fclose(fwp);
            break;
        }
        else
        {
            fscanf(fwp,"%d%f\n",&at,&dis);
            a[w].insert(at);
            dist[w].insert(dis);
        }
    }
    for(int i=0;i<now;i++)
    {
        if(a[i].size()==0)
            continue;
        for(int j=i;j<now;j++)
        {
            if(a[j].size()==0)
                continue;
            set<int> v;
            //it=set_intersection (a[i], a[j], v);   
            it=set_intersection (a[i],a[i]+a[i].size(), a[j], a[j]+a[j].size(), v);
            //it=set_intersection (a[i].begin(),a[i].end(), a[j].begin(), a[j].end(), v.begin());
        //  v.resize(it-v.begin());
            for (it=v.begin(); it!=v.end(); ++it)
            {
                cout << ' ' << *it;
            }

        }
    }
return 0;
}
#包括
#包括
#包括
#包括
使用名称空间std;
#现在定义5519
int main()
{   
设定一个[现在];
setdist[现在];
刚毛昆虫;
//第五组(10);
文件*fwp=fopen(“wp02”,“r”);
int w,at,dis;
set::迭代器;
而(1)
{
如果(fscanf(fwp,%d,&w)=EOF)
{
fclose(fwp);
打破
}
其他的
{
fscanf(fwp、%d%f\n、&at、&dis);
a[w]。插入(at);
距离[w]。插入(dis);
}
}

对于(int i=0;i集合交叉点的最小可编译示例(在您的代码中):

#包括
#包括
int main()
{
std::set x[10];
int i=2;
int j=3;
std::set v;
std::set_交集(x[i].begin(),x[i].end(),x[j].begin(),x[j].end(),std::inserter(v,v.begin());
}

您应该查看
设置交叉点的一些文档,例如


您将看到,它不将
std::set
或任何其他容器作为参数

std::set\u交集
std::set
完全无关。该算法对两个范围进行操作,并将两个范围中存在的每个元素复制到输出流中。每个输入范围由一对ite指定rators;第一个迭代器指向范围中的第一个元素,第二个迭代器指向范围的末尾。这是范围的标准约定。您可以从任何标准容器以及许多其他位置获得迭代器对。对于标准容器,成员函数
begin()
end()
返回迭代器,指定容器所包含元素的范围。因此对于任何容器类型:

my_container container;
// stuff objects into container
my_container other_container;
// stuff objects into other_container
my_container intersection;
std::set_intersection(container.begin(), container.end(),
    other_container.begin(), other_container.end(),
    std::back_inserter(intersection));

当您需要帮助解决错误时,最好发布错误。文件
wp02
中应该包含什么?您在说什么?什么错误?是编译错误吗?是运行时断言失败吗?是segfault吗?我们在这里不是心灵感应。set_交叉点(a[i],a[i]+a[i]。size(),a[j],a[j]+a[j]。size(),v);请用英语解释您在这里要完成的任务。从代码中推断出来的语法是错误的。
my_container container;
// stuff objects into container
my_container other_container;
// stuff objects into other_container
my_container intersection;
std::set_intersection(container.begin(), container.end(),
    other_container.begin(), other_container.end(),
    std::back_inserter(intersection));