我有一个名为 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/