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_Vector - Fatal编程技术网

C++ c++;自定义向量排序

C++ c++;自定义向量排序,c++,sorting,vector,C++,Sorting,Vector,我不会太深入地去做我正在做的事情,因为这是家庭作业,我不需要为我做,但是,我确实需要一些帮助。我需要能够指定向量的哪个部分首先得到排序,以及在哪些参数下得到排序 目前我所做的一切都是通过打电话来实现的 sort ( v.begin(), v.end() ); 如果你写出我的向量,它们看起来会像: 5 2 4 6 12 2 5 2251225721 我可能需要按第二列降序排序,如果第二列相同,我将按下一个指定列排序 称为like./sort 2,4 将按第二列和第四列排序 我环顾四周,除了为此编

我不会太深入地去做我正在做的事情,因为这是家庭作业,我不需要为我做,但是,我确实需要一些帮助。我需要能够指定
向量
的哪个部分首先得到排序,以及在哪些参数下得到排序

目前我所做的一切都是通过打电话来实现的

sort ( v.begin(), v.end() );
如果你写出我的向量,它们看起来会像:

5 2 4 6 12 2 5

2251225721

我可能需要按第二列降序排序,如果第二列相同,我将按下一个指定列排序

称为like./sort 2,4

将按第二列和第四列排序

我环顾四周,除了为此编写自己的排序算法外,我不知道如何自定义排序。

std::sort()
还有第二种形式,它将比较函子作为第三个参数。这使您可以控制排序的顺序,而无需自己编写排序算法

您提供的函数有两个对象,如果第一个对象排序在第二个对象之前(“小于”),则必须返回
true
,否则返回
false

例如:

排序(v.begin(),v.end(),[](常量向量和v1,常量向量和v2){ //如果v1 (当然,这取决于您如何确定排序所需的逻辑。)

std::sort()
有第二种形式,它将比较函子作为第三个参数。这使您可以控制排序的顺序,而无需自己编写排序算法

您提供的函数有两个对象,如果第一个对象排序在第二个对象之前(“小于”),则必须返回
true
,否则返回
false

例如:

排序(v.begin(),v.end(),[](常量向量和v1,常量向量和v2){ //如果v1 (当然,这取决于您如何确定排序所需的逻辑。)

std::sort()
有第二种形式,它将比较函子作为第三个参数。这使您可以控制排序的顺序,而无需自己编写排序算法

您提供的函数有两个对象,如果第一个对象排序在第二个对象之前(“小于”),则必须返回
true
,否则返回
false

例如:

排序(v.begin(),v.end(),[](常量向量和v1,常量向量和v2){ //如果v1 (当然,这取决于您如何确定排序所需的逻辑。)

std::sort()
有第二种形式,它将比较函子作为第三个参数。这使您可以控制排序的顺序,而无需自己编写排序算法

您提供的函数有两个对象,如果第一个对象排序在第二个对象之前(“小于”),则必须返回
true
,否则返回
false

例如:

排序(v.begin(),v.end(),[](常量向量和v1,常量向量和v2){ //如果v1

(当然,由您自己来确定排序所需的逻辑。)

为什么不传递一个
std::vector?
请详细说明。我对C++非常陌生,一定会错过一些东西。今天花了5个小时试图让这个程序完成它应该做的事情。为什么不传递一个
std::vector?
请详细说明。我对C++非常陌生,一定会错过一些东西。今天花了5个小时试图让这个程序完成它应该做的事情。为什么不传递一个
std::vector?
请详细说明。我对C++非常陌生,一定会错过一些东西。今天花了5个小时试图让这个程序完成它应该做的事情。为什么不传递一个
std::vector?
请详细说明。我对C++非常陌生,一定会错过一些东西。今天花了5个小时试图让这个程序做它应该做的事情。这与我正在寻找的一样,谢谢。有没有标准的方法来指定要检查的第一个字符串?@TheUnknown:我不知道你的意思。在上面的代码中,您正在对向量进行排序。排序函数一次提供两个向量进行比较。您可能需要迭代这两个向量,并应用您需要的任何逻辑来确定这两个向量应该如何相对定位。是的,这是有道理的,我认为我是jsut弄错了。这与我正在寻找的内容一致,谢谢。有没有标准的方法来指定要检查的第一个字符串?@TheUnknown:我不知道你的意思。在上面的代码中,您正在对向量进行排序。排序函数一次提供两个向量进行比较。您可能需要迭代这两个向量,并应用您需要的任何逻辑来确定这两个向量应该如何相对定位。是的,这是有道理的,我认为我是jsut弄错了。这与我正在寻找的内容一致,谢谢。有没有标准的方法来指定要检查的第一个字符串?@TheUnknown:我不知道你的意思。在上面的代码中,您正在对向量进行排序。排序函数一次提供两个向量进行比较。您可能需要迭代这两个向量,并应用您需要的任何逻辑来确定这两个向量应该如何相对定位。是的,这是有道理的,我认为我是jsut弄错了。这与我正在寻找的内容一致,谢谢。有没有标准的方法来指定要检查的第一个字符串?@TheUnknown:我不知道你的意思。在上面的代码中,您正在对向量进行排序。排序函数一次提供两个向量进行比较。您可能需要迭代这两个向量并应用任何内容
std::sort(v.begin(), v.end(), [](const vector<string>& v1, const vector<string>& v2) {
    // return true if v1 < v2, false otherwise
});