当使用std::set 的emplace 以避免重复存入相同的信息,遇到一个问题, 仅仅重载操作符==是不行的,需要重载操作符<
struct classcomp {
bool operator() (const int& lhs, const int& rhs) const
{
return lhs<rhs; //需要重载'<'
}
};
int test_set_cplusplus()
{ // set:构造函数
std::set<int> first; // empty set of ints
int myints[] = { 10, 20, 30, 40, 50 };
std::set<int> second(myints, myints + 5); // range
std::set<int> third(second); // a copy of second
std::set<int> fourth(second.begin(), second.end()); // iterator ctor.
std::set<int, classcomp> fifth; // class as Compare
bool(*fn_pt)(int, int) = fncomp;
std::set<int, bool(*)(int, int)> sixth(fn_pt); // function pointer as Compare
}
本文探讨了在C++中使用std::set时,如何通过重载操作符<来避免重复元素的插入,以及如何自定义比较器。示例展示了不同方式创建set,包括使用函数指针和自定义类作为比较标准。
1218

被折叠的 条评论
为什么被折叠?



