Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;数据结构排序算法_C++_Sorting - Fatal编程技术网

C++ C++;数据结构排序算法

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排序算法,以便我根据

我想使用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.value使用并提供自定义比较器(模板arg
Compare

#包括
#包括
//...
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在这种情况下到底做了什么呢?