C++ 为类中的集合定义顺序
C++ Define an order for a set inside a class
我在类中有一个集合,我想为该集合定义一个新顺序,但顺序取决于类的属性。我应该如何实现它?我尝试过这样的事情
class myclass{
int c;
set<int,cmp> myset;
struct cmp{
bool operator()(const unsint a, const unsint b)
const {
return (depends on c) ;
}
};
}
但它没有用。任何帮助不胜感激,谢谢。
编辑:问题是我不知道c先验。这是我在输入中得到的值,然后它将始终相同。
return (depends on c) ;
我认为让comapare函数依赖于c
不是好主意,因为您的set
对象已经构建树并且std::set
不支持重建。
此外,请注意,std::set
要求比较器符合严格的弱排序规则。
您可以在"比较"文档和维基百科中阅读更多信息
至于您的问题,您可以使用另一个比较函数创建另一个集合,然后在此处复制内容。
typedef std::set<int, cmp2> anotherSet;
std::copy(std::begin(firstSet), std::end(firstSet), std::inserter(anotherSet));
但是,如果您必须根据某些参数对其进行重新排序,看起来您实际上不需要std::set
。考虑使用其他数据结构,如向量或列表。此外,如果需要 ~O(log N) 访问复杂性,则可以将数据组织到向量中堆。
相关文章:
- 从具有自定义排序的向量创建集合
- 查询数据库以在 C++ 中创建自定义类集合的最佳方法
- 在具有自定义对象的集合中查找值
- 如何使用自定义重复的法官功能制作集合
- 如何定义[] =和at()=自定义集合
- CMAKE GOOGLETEST在集合集合中会重新定义错误
- 设置要与无序集合一起使用的自定义类 - 在集合中找不到元素
- 自定义集合中每个的C++
- C 11按几个属性的自定义对象集合
- 集合元素类中定义的集合的比较器
- 自定义比较器,将唯一元素插入到c++中的集合中
- 集合<向量<int>>必须定义比较函数吗?
- 如何在定义映射/集合时实例化比较函数(函子)
- C++ 为类中的集合定义顺序
- 具有单个成员的自定义结构(包装器)的集合(也是自定义结构)到单个成员的集合
- 使用Functor在集合中生成自定义排序方法
- 从自定义集合(struct Array)中读取数据
- 在C++中定义和搜索相关订单上的集合
- 在包含自定义类型的集合中查找
- 如何为已显式定义了比较函数的集合定义迭代器