<small id='ZA0lo'></small><noframes id='ZA0lo'>

    <bdo id='ZA0lo'></bdo><ul id='ZA0lo'></ul>
  • <i id='ZA0lo'><tr id='ZA0lo'><dt id='ZA0lo'><q id='ZA0lo'><span id='ZA0lo'><b id='ZA0lo'><form id='ZA0lo'><ins id='ZA0lo'></ins><ul id='ZA0lo'></ul><sub id='ZA0lo'></sub></form><legend id='ZA0lo'></legend><bdo id='ZA0lo'><pre id='ZA0lo'><center id='ZA0lo'></center></pre></bdo></b><th id='ZA0lo'></th></span></q></dt></tr></i><div id='ZA0lo'><tfoot id='ZA0lo'></tfoot><dl id='ZA0lo'><fieldset id='ZA0lo'></fieldset></dl></div>

        <legend id='ZA0lo'><style id='ZA0lo'><dir id='ZA0lo'><q id='ZA0lo'></q></dir></style></legend>

      1. <tfoot id='ZA0lo'></tfoot>
      2. 对自定义类型的列表进行排序

        时间:2024-05-11
      3. <small id='ezKfK'></small><noframes id='ezKfK'>

        <legend id='ezKfK'><style id='ezKfK'><dir id='ezKfK'><q id='ezKfK'></q></dir></style></legend>

              <tbody id='ezKfK'></tbody>
            <i id='ezKfK'><tr id='ezKfK'><dt id='ezKfK'><q id='ezKfK'><span id='ezKfK'><b id='ezKfK'><form id='ezKfK'><ins id='ezKfK'></ins><ul id='ezKfK'></ul><sub id='ezKfK'></sub></form><legend id='ezKfK'></legend><bdo id='ezKfK'><pre id='ezKfK'><center id='ezKfK'></center></pre></bdo></b><th id='ezKfK'></th></span></q></dt></tr></i><div id='ezKfK'><tfoot id='ezKfK'></tfoot><dl id='ezKfK'><fieldset id='ezKfK'></fieldset></dl></div>
              <bdo id='ezKfK'></bdo><ul id='ezKfK'></ul>
              <tfoot id='ezKfK'></tfoot>
                  本文介绍了对自定义类型的列表进行排序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  我想要一个 stl list 对象,其中每个对象包含两个 int.之后我想在第一个 int 的值之后使用 stl::sort 对列表进行排序.我如何告诉排序函数它应该在第一个 int 之后排序?

                  I want to have a stl list of objects where each object contains two int's. Afterwards I want to sort the list with stl::sort after the value of the first int. How do I tell the sort function that it's supposed to sort after the first int?

                  推荐答案

                  您可以指定自定义排序谓词.在 C++11 中,这最好用 lambda 来完成:

                  You can specify a custom sort predicate. In C++11 this is best done with a lambda:

                  typedef std::pair<int, int> ipair;
                  std::list<ipair> thelist;
                  
                  thelist.sort([](const ipair & a, const ipair & b) { return a.first < b.first; });
                  

                  在旧版本的 C++ 中,您必须编写适当的函数:

                  In older versions of C++ you have to write an appropriate function:

                  bool compFirst(const ipair & a, const ipair & b) { return a.first < b.first; }
                  
                  thelist.sort(compFirst);
                  

                  (相反,如果 ipair 你当然可以拥有自己的数据结构;只需相应地修改比较函数即可访问相关数据成员.)

                  (Instead if ipair you can of course have your own data structure; just modify the comparison function accordingly to access the relevant data member.)

                  最后,如果这有意义,您还可以为您的自定义类配备 operator<.这允许您在任何有序上下文中自由使用该类,但请务必了解其后果.

                  Finally, if this makes sense, you can also equip your custom class with an operator<. That allows you to use the class freely in any ordered context, but be sure to understand the consequences of that.

                  这篇关于对自定义类型的列表进行排序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  上一篇:stl 排序 - 严格弱排序 下一篇:为什么 std::array::size 不是静态的?

                  相关文章

                  • <bdo id='Ae6bc'></bdo><ul id='Ae6bc'></ul>

                  <small id='Ae6bc'></small><noframes id='Ae6bc'>

                  1. <legend id='Ae6bc'><style id='Ae6bc'><dir id='Ae6bc'><q id='Ae6bc'></q></dir></style></legend>
                    <i id='Ae6bc'><tr id='Ae6bc'><dt id='Ae6bc'><q id='Ae6bc'><span id='Ae6bc'><b id='Ae6bc'><form id='Ae6bc'><ins id='Ae6bc'></ins><ul id='Ae6bc'></ul><sub id='Ae6bc'></sub></form><legend id='Ae6bc'></legend><bdo id='Ae6bc'><pre id='Ae6bc'><center id='Ae6bc'></center></pre></bdo></b><th id='Ae6bc'></th></span></q></dt></tr></i><div id='Ae6bc'><tfoot id='Ae6bc'></tfoot><dl id='Ae6bc'><fieldset id='Ae6bc'></fieldset></dl></div>

                    <tfoot id='Ae6bc'></tfoot>