更改 std::set 作为成员属性的顺序
Change the order of a std::set as a member attribute
>我正在尝试更改特定配置中集合的顺序:
自定义对象具有以下形式
class CustomObject{
public:
...
std::set<CustomObject*> container;
};
我想永久保留该属性,告知容器按以下顺序排序:
elt1
和elt2
是容器的元素,和 elt1 < elt2
iff elt1.container.size()<elt2.container.size()
我知道我必须使用
struct cmpStruct {
bool operator() (int const & lhs, int const & rhs) const
{
return lhs > rhs;
}
};
如前所述,std::set 迭代顺序是否总是根据C++规范升序?
但是我不知道该怎么做才能访问结构内的"这个">
非常感谢您的帮助
类似的东西?
class CustomObject{
public:
CustomObject(int _x) : x(_x) {};
int x;
};
struct cmpStruct {
bool operator() (const CustomObject* lhs, const CustomObject* rhs) const
{
return lhs->x > rhs->x;
}
};
int main(int argc, char* argv[])
{
std::set<CustomObject*, cmpStruct> container;
CustomObject a(10);
CustomObject b(20);
CustomObject c(5);
container.insert(&a);
container.insert(&b);
container.insert(&c);
for(auto co : container) {
std::cout << co->x << std::endl;
}
return 0;
}
输出:
20
10
5
相关文章:
- 将可选属性表示为 C++类成员
- 依赖于类成员属性的类实例成员
- 我想获取点的属性,它报告错误 C3867:"point::output_x":非标准语法;使用"&"创建指向成员的指针
- 从C++代码中直接读取成员属性
- [[maybe_unused]] 在成员变量上,GCC 警告(不正确?)该属性被忽略
- 可以使用仅功能成员属性进行回调界面
- 将成员函数分配给实例成员的属性
- C++ 使用成员函数返回结构体指针属性的值
- 更改 std::set 作为成员属性的顺序
- C 11中成员函数的值类别属性是什么?
- 具有数据成员语法的零成本属性
- 成员属性作为方法的默认值
- 用纯属性注释const成员函数
- 如何声明 noexcept 如果只有属性的成员函数是 noexcept
- OpenMP中类成员变量的数据共享属性
- boost::variant-获取成员的向量属性
- C++-填充派生类数据成员,同时设置基类属性值
- 灵气属性传播问题与单成员结构.
- 从作为指针的类成员中获取值,该指针是类的属性
- C++混淆了成员模板的属性名称