在一个数组中排序多个字段-C ++

用户名

我想同时对第三列的值进行排序,第一列和第二列的值使用数组与第三列的位置相同

例如

排序之前

2 30 2000
1 40 1000
3 10 4000
5 20 3000
4 50 5000

排序后

1 40 1000
2 30 2000
5 20 3000
3 10 4000
4 50 5000

我知道可以通过使用向量和std :: sort来完成,但是有可能使用数组来达到相同的结果吗?

干杯和hth。-阿尔夫

您可以使用std::sort对数组进行排序,可以使用std::beginstd::end获取传递到的开始和结束的迭代器sort,还可以使用std::tuple提供比较功能。

std::vector与此任务的原始数组之间没有特别相关的区别

示例代码:

#include <algorithm>        // std::sort
#include <iterator>         // std::begin, std::end
#include <iostream>         // std::cout, std::endl
#include <tuple>            // std::tie
using namespace std;

struct Triplet { int values[3]; };

template< int n >
void display( Triplet const (&array)[n] )
{
    for( auto const& t : array )
    {
        cout << t.values[0] << ' ' << t.values[1] << ' ' << t.values[2] << endl;
    }
}

auto main()
    -> int
{
    Triplet array[]  =
    {
        { 2, 30, 2000 },
        { 1, 40, 1000 },
        { 3, 10, 4000 },
        { 5, 20, 3000 },
        { 4, 50, 5000 }
    };

    auto const triplet_less = []( Triplet const& a, Triplet const& b ) -> bool
    {
        return 
            (tie( a.values[2], a.values[0], a.values[1] ) <
                tie( b.values[2], b.values[0], b.values[1] ));
    };

    cout << "Original data: " << endl;
    display( array );

    sort( begin( array ), end( array ), triplet_less );

    cout << endl;
    cout << "Sorted data: " << endl;
    display( array );
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在堆C ++上将一个数组分配给另一个数组

来自分类Dev

根据另一个数组的排序顺序对多个数组进行排序

来自分类Dev

在C中将一个数组的元素复制到另一个

来自分类Dev

基于一个排序多个数组

来自分类Dev

如何在C ++中对一个数组进行排序并获取对应的第二个数组?

来自分类Dev

在C中读取一个字符和一个数字

来自分类Dev

给定一个数组,找到小于c的n个数字的组合

来自分类Dev

将一个数组排序为另一个数组-C

来自分类Dev

C / CAPL从另一个定义一个数组

来自分类Dev

查询一个字段等于另一个数组字段?

来自分类Dev

使用c ++在编译时从另一个数组中提取一个数组

来自分类Dev

C#-我可以使用数组初始化程序从另一个数组构造一个字节数组吗?

来自分类Dev

C#将多个数组合并为一个数组

来自分类Dev

将未排序的C数组复制到另一个数组中,同时避免重复

来自分类Dev

指针给出整个数组而不是C ++ RayLib中的一个字符

来自分类Dev

创建一个数组,将每个字符存储在c中

来自分类Dev

如何在C编程中将一个数组绑定到另一个数组?

来自分类Dev

根据另一个数组的排序顺序对多个数组进行排序

来自分类Dev

C#如何将数组更改为一个或多个数组

来自分类Dev

在C ++中将两个3 x 3数组连接为一个数组

来自分类Dev

数组填充字母在文本文件中出现的频率。如何在C中排序(降序)并仍然知道哪个字母与哪个数字一起?

来自分类Dev

迭代一个字符串并用 C++ 填充一个数组

来自分类Dev

c#将一个数据表拆分为多个数据集

来自分类Dev

基于一个数组对其他数组进行排序 (Obj-C)

来自分类Dev

C# 将一个数组分成多个较小的数组(随机)

来自分类Dev

如何在C中的另一个数组上打印一个数组?

来自分类Dev

C++“继承”一个数组

来自分类Dev

C# 使用另一个字段的 setter 更新字段

来自分类Dev

C - 使用通用函数将多个数组排序为一个

Related 相关文章

  1. 1

    在堆C ++上将一个数组分配给另一个数组

  2. 2

    根据另一个数组的排序顺序对多个数组进行排序

  3. 3

    在C中将一个数组的元素复制到另一个

  4. 4

    基于一个排序多个数组

  5. 5

    如何在C ++中对一个数组进行排序并获取对应的第二个数组?

  6. 6

    在C中读取一个字符和一个数字

  7. 7

    给定一个数组,找到小于c的n个数字的组合

  8. 8

    将一个数组排序为另一个数组-C

  9. 9

    C / CAPL从另一个定义一个数组

  10. 10

    查询一个字段等于另一个数组字段?

  11. 11

    使用c ++在编译时从另一个数组中提取一个数组

  12. 12

    C#-我可以使用数组初始化程序从另一个数组构造一个字节数组吗?

  13. 13

    C#将多个数组合并为一个数组

  14. 14

    将未排序的C数组复制到另一个数组中,同时避免重复

  15. 15

    指针给出整个数组而不是C ++ RayLib中的一个字符

  16. 16

    创建一个数组,将每个字符存储在c中

  17. 17

    如何在C编程中将一个数组绑定到另一个数组?

  18. 18

    根据另一个数组的排序顺序对多个数组进行排序

  19. 19

    C#如何将数组更改为一个或多个数组

  20. 20

    在C ++中将两个3 x 3数组连接为一个数组

  21. 21

    数组填充字母在文本文件中出现的频率。如何在C中排序(降序)并仍然知道哪个字母与哪个数字一起?

  22. 22

    迭代一个字符串并用 C++ 填充一个数组

  23. 23

    c#将一个数据表拆分为多个数据集

  24. 24

    基于一个数组对其他数组进行排序 (Obj-C)

  25. 25

    C# 将一个数组分成多个较小的数组(随机)

  26. 26

    如何在C中的另一个数组上打印一个数组?

  27. 27

    C++“继承”一个数组

  28. 28

    C# 使用另一个字段的 setter 更新字段

  29. 29

    C - 使用通用函数将多个数组排序为一个

热门标签

归档