gpt4 book ai didi

c++ - 在其中一个变量上对多变量结构进行排序

转载 作者:行者123 更新时间:2023-11-30 05:49:23 25 4
gpt4 key购买 nike

大家早上好我正在尝试根据其中一个变量的值对在结构中连接的 3 个变量进行排序。为了清楚起见,我有一个名为 edge 的结构化变量类型,它有 3 个整数:edge.a edge.b 和 edge.w。我想按 edge.w 上的值对边缘进行排序。我发现要实现这一点,我需要使用 bool 运算符,但我还没有找到方法。这是我的代码:

struct type{
int a,b,w;
bool operator<(const edge&A) const{
return w<A.w;
};
};
type edge[6];
sort (edge);

sort() 包含在库中,对括号内的数组执行快速排序。请帮忙,TY

最佳答案

尝试以下操作

#include <algorithm>

//...

struct type{
int a,b,w;
bool operator<(const type& A) const{
return w<A.w;
};
};

type edge[6];

//...

std::sort( edge, edge + 6 );

或者

#include <algorithm>
#include <iterator>

//...

struct type{
int a,b,w;
bool operator<(const type& A) const{
return w<A.w;
};
};

type edge[6];

//...

std::sort( std::begin( edge ), std::end( edge ) );

另一种方法如下

#include <algorithm>
#include <iterator>

//...

struct type{
int a,b,w;

struct sort_by_a
{
bool operator ()(const type &lhs, const type &rhs ) const
{
return lhs.a < rhs.a;
}
};
struct sort_by_b
{
bool operator ()(const type &lhs, const type &rhs ) const
{
return lhs.b < rhs.b;
}
};
struct sort_by_w
{
bool operator ()(const type &lhs, const type &rhs ) const
{
return lhs.w < rhs.w;
}
};
};

type edge[6];

//...

std::sort( std::begin( edge ), std::end( edge ), type::sort_by_a() );
//...
std::sort( std::begin( edge ), std::end( edge ), type::sort_by_b() );
//...
std::sort( std::begin( edge ), std::end( edge ), type::sort_by_w() );

关于c++ - 在其中一个变量上对多变量结构进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27768052/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com