【问题标题】:Can I sort C-style array (in my case of struct) using std::sort? [duplicate]我可以使用 std::sort 对 C 样式的数组(在我的结构中)进行排序吗? [复制]
【发布时间】:2017-10-09 18:43:52
【问题描述】:

是否可以使用 std::sort 或者我应该使用 qsort 对结构数组(我的意思是 C 样式数组,而不是 std::array)进行排序?

附:我知道,我应该使用 std::vector 或 std::array 而不是使用 new 和 delete 或使用 type name [size] 创建数组,但我还是想知道。

【问题讨论】:

  • 您要的是int v[10];int* v = new int[10]; 形式的数组吗?
  • 可以,只需提供开始/结束。
  • @Rakete1111,两者都
  • @Jarod42 这么简单的std::sort(v, v+size*sizeof(v))?
  • 我回答后在查的时候发现了这个:stackoverflow.com/questions/5897319/…

标签: c++ sorting


【解决方案1】:

假设您使用 C++11,您可以使用 std::begin 和 std::end 来确定数组的起点和终点。

所以:

int someArray[10]
std::sort(std::begin(someArray), std::end(someArray));

【讨论】:

  • 哇!我不知道我可以这样使用 std::begin 和 std::end !
  • @Nisba,对于结构,您仍然必须提供一个比较函数对象作为此答案未显示的第三个参数。
  • @rex 哦,是的,我知道 ;)
  • @Nisba 好的,很好。 :) 还要记住它必须确保strict weak orderingstd::tie 可能是结构成员最简单的方法。
  • @rex 感谢您教我一些关于结构的新知识!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-24
  • 2011-08-19
  • 1970-01-01
  • 1970-01-01
  • 2023-03-28
  • 2018-11-20
  • 1970-01-01
相关资源
最近更新 更多