使用set_intersection和set给出一个错误
using set_intersection with set giving an error?
在以下代码中出现错误。在第38行,我得到错误,为什么我不知道,但我在很多方面尝试过,但它没有解决PLZ解决我的问题使用set_intersection设置给出一个错误?
#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%fn",&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;
}
set_intersection的最小可编译示例(符合您的代码风格):
#include <algorithm>
#include <set>
int main()
{
std::set<int> x[10];
int i = 2;
int j = 3;
std::set<int> v;
std::set_intersection(x[i].begin(), x[i].end(), x[j].begin(), x[j].end(), std::inserter(v, v.begin()));
}
你应该看看set_intersection
的一些文档,例如cppreference.com或SGI STL
你会看到它不接受std::set
或任何其他容器作为参数
std::set_intersection
与std::set
无关。该算法在两个范围上操作,并将两个范围中的每个元素复制到输出流中。每个输入范围由一对迭代器指定;第一个迭代器指向范围内的第一个元素,第二个迭代器指向范围的末尾。这是range的标准约定。您可以从任何标准容器以及许多其他地方获得迭代器对。对于标准容器,成员函数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));
相关文章:
- 是否有一个 std::set 函数来确定不超过数字 x 的最大元素?
- 我可以制作一个std::set的constexpr对象吗
- 创建 std::set 只复制一个元素,如何解决这个问题?
- 如何键入定义一个专门的 std::set 模板,使用特定的比较函数实例化
- 为什么传递给函数 set::itrator 而不是 const_iterator 违反了一个定义规则?
- 给定一个 std::set::iterator,获取一个指向下一个元素的迭代器
- STD :: SET(或STD :: MAP)是否有一个提供基于值的查找的STL比较器?STD :: lands_les
- std::set的替代品(可以将元素从一个集合移动到另一个集合)
- 获取第 n 项与 std::set 中第一个/最后一个的偏移量
- 模板化的使用是否为具有自定义键的unordered_map/set创建了一个良好的模式
- Cmake错误:set命令不喜欢上一个set命令中的相同.h文件
- 如何将 std::set 的元素添加到另一个非空集
- 如何在另一个类数据成员上定义“std::set”排序
- 为什么 std::set<>::find 返回一个 const?
- 返回一个带有 "return std::set<int>()" 的空集 - 为什么它会运行?
- 在C#中创建一个STL std::set并封送到C++
- 我应该做一个类,而不是重复的get/set语句
- 从std::vector存储到std::set,其中vector包含一个结构体,而std::set只包含该结构体中的一个
- 擦除 std::set 的最后一个成员
- 使用set_intersection和set给出一个错误