C++ C++;数据结构排序算法
我想使用stl排序算法对一些数字进行排序,但我也想记住它们的初始位置。 我的数据结构如下:C++ C++;数据结构排序算法,c++,sorting,C++,Sorting,我想使用stl排序算法对一些数字进行排序,但我也想记住它们的初始位置。 我的数据结构如下: struct Numbers { int position; int value; }; vector<Numbers> a; 我创建了一个数字向量,如下所示: struct Numbers { int position; int value; }; vector<Numbers> a; 向量a; 如何使用stl排序算法,以便我根据
struct Numbers {
int position;
int value;
};
vector<Numbers> a;
我创建了一个数字向量,如下所示:
struct Numbers {
int position;
int value;
};
vector<Numbers> a;
向量a;
如何使用stl排序算法,以便我根据值对数据结构进行排序?您需要重载“您也可以使用函子:
struct comp {
bool operator()(const Numbers &lhs, const Numbers& rhs) const{
lhs.value < rhs.value;
}
};
std::sort(a.begin(),a.end(), comp());
struct comp{
布尔运算符(){
lhs值
使用C++11,可以使用lambda函数:
std::sort( a.begin() , a.end() ,
[](const Numbers& lhs , const Numbers& rhs)
{ return lhs.value < rhs.value; }
);
排序(a.begin(),a.end(),
[](常数编号和左侧、常数编号和右侧)
{返回lhs.valueCompare
)
#包括
#包括
//...
std::载体a;
//填充向量a并相应地设置每个元素的位置。。。
结构{
布尔运算符()(常数编号和a、常数编号和b)常数
{
返回a.value
请避免使用命名空间std
是否必须使用const?我是否可以使用comp函数而不将其包含在struct中?如果不是,原因是什么?thanks@user2653125是的,您可以使用bool comp(const Numbers&lhs,const Numbers&rhs)const{lhs.value
则只有comp
,在std::sort
中,没有()
。此外,const
引用用于避免复制编号
objects@P0W他问常量
限定是否是强制性的。它不是。常量
不是用来避免复制的,&
(参考限定符)是。@H2CO3我写的const
referencewell,那么const在这种情况下到底做了什么呢?