C++ unordered_set 用户定义类的比较器函数
c++ unordered_set Comparator function for a user-defined class
我有这样的东西:
using namespace std;
class QuadraticPrimeSolution
{
private:
int a;
int b;
int numberOfPrimes;
bool isPrime(int n, set<int> &primeHash);
public:
QuadraticPrimeSolution(int a, int b):a(a),b(b),numberOfPrimes(0){};
void calculateNumberOfPrimes(set<int> &primeHash);
int getNumberOfPrimes(){return numberOfPrimes;}
};
class QuadraticPrimeSolver
{
private:
struct classcomp {
bool operator() (QuadraticPrimeSolution& lhs, QuadraticPrimeSolution& rhs)
{
return lhs.getNumberOfPrimes()>rhs.getNumberOfPrimes();
}
};
set<QuadraticPrimeSolution, classcomp> solutions;
set<int> primeHash;
QuadraticPrimeSolution getMaxSolution();
int a;
int b;
public:
QuadraticPrimeSolver(int a, int b):a(a), b(b){};
void solve();
};
bool QuadraticPrimeSolution::isPrime(int n, set<int> &primeHash)
{
if(primeHash.empty())
{
primeHash.insert(n);
return true;
}
for(auto it= primeHash.begin(); it!= primeHash.end(); it++)
{
if(n%(*it)==0)
{
return false;
}
}
primeHash.insert(n);
return true;
}
void QuadraticPrimeSolver::solve()
{
for(int i=(-1)*a; i<=a; i++)
{
for(int j=(-1)*b; j<=b; j++)
{
QuadraticPrimeSolution aSolution = new aSolution(i,j);
aSolution.calculateNumberOfPrimes(primeHash);
solutions.insert(aSolution);
}
}
}
int main()
{
QuadraticPrimeSolver QPS(0,40);
QPS.solve();
}
基本上,我正在尝试做的是计算每个QuadraticPrimeSolution并将其存储到QuadraticPrimeSolver中的哈希表中,然后我可以稍后访问该哈希表。
我的问题是,我的比较器实现是否正确?现在编译器正在抱怨我的比较器,以及插入集合的以下行。
solutions.insert(aSolution);
请帮忙!
class building
{
public:
int getPosition() const {return position;};
private:
int height;
int position;
};
class ManyBuildings
{
public:
void populateBuildings(std::vector<std::string> buildings);
private:
class comparePosition {
public:
bool operator () (const building &lhs, const building &rhs) {
return lhs.getPosition() > rhs.getPosition();
}
};
std::set<building, comparePosition> buildings;
};
- 使用
set
而不是unordered_set
set
的模板参数应该是类型,而不是函数
相关文章:
- 函数类作为比较器
- 什么是自定义比较器以及如何在 C++ 的排序函数中使用它?
- 没有默认构造函数作为模板参数的自定义比较器
- 使用迭代器的自定义比较器函数
- 为什么在类或结构中传递自定义比较器函数?
- 为什么当我们使用等于'='符号比较器函数时,c ++的内置排序函数不起作用?
- 为模板类中的特定类型编写比较器函数
- 下面的比较器函数在 c++ 中如何工作?
- 如何在类中从排序调用比较器函数C++
- sort() 方法 c++ 中的比较器函数.为大量数字获得不同的解决方案
- std::map 的比较器函数中的 SEG 故障/未定义行为
- 结构上的 C++ 中的比较器函数
- C++ unordered_set 用户定义类的比较器函数
- c++比较器函数,为映射指定特定的键顺序
- 使用自定义比较器函数在类中定义优先级队列
- 使用std::sort比较器函数时出现异常错误
- 制作比较器函数的向量
- 是否可以使用比较器函数过滤掉STL多集下界检查的数据
- 如何使用std::multiset与多个比较器函数
- 如何使用自定义比较器函数将所有字谜组合在一起