c++ - 如何使用 C++ 将数组按字母顺序排序为新数组?

标签 c++ arrays sorting visual-studio-2015

我有一个名为 g_Parameters 的数组,我希望在一个名为 g_SortedParameters 的新数组中按字母顺序排序。

我已经提供了数组的代码。我需要按字母顺序对它进行排序以在日志中使用,但 g_Parameters 本身不按字母顺序排序,因为其他代码依赖于索引。

const unsigned long ParamsCount = 6;
const TCHAR * const g_Parameters[ParamsCount] =
{ TEXT("AllowFatal"), TEXT("Variant"), TEXT("EnableLogs"),
  TEXT("AllowRescan"), TEXT("Path"), TEXT("Filter"),
};

如能帮助我将此数组排序为新数组,我将不胜感激。如果需要,我很乐意提供更多信息。

最佳答案

一种方法是使用 std::partial_sort_copy()尽管名称如此,但它可用于对整个数组的拷贝进行排序,而无需修改原始数组的顺序。

演示:

#include <algorithm>
#include <array>
#include <iostream>

template<class T, std::size_t N>
void print_array(const std::array<T, N> &ar) {
  for (const auto &elem : ar) {
    std::cout << elem << ' ';
  }
  std::cout << '\n';
}

int main() {
  std::array<int, 5> orig = { 10, 8, 1, 4, 3 }, sorted;
  std::partial_sort_copy(orig.begin(), orig.end(), sorted.begin(), sorted.end());
  print_array(orig);
  print_array(sorted);
}

编译运行时会打印出来

10 8 1 4 3 
1 3 4 8 10 

关于c++ - 如何使用 C++ 将数组按字母顺序排序为新数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57788701/

相关文章:

c++ - 如何根据类型是整型还是浮点型来更改模板方法?

c++ - 最好使用 getline 或 cin 从输入文件填充数组?

c - 将结构数组传递给 malloc 函数

javascript - 这段 javascript 代码没有错误,但它不起作用。是否存在我看不到的 secret 错误?

c++ - 根据 2 个参数对 vector 进行排序

C++ 11 vector 构造函数复制与范围?

c++ - 显示导致垃圾的大整数

javascript - 如何将两个数组与对象合并为一个?

python - 排序csv python 2.7

c# - 使用起始值对对象列表进行排序的最佳方法是什么?