我有很多很长的数组。不可能进行运行时排序。手动对它们进行分类也很耗时。此外,以后可以按任何顺序添加新元素,所以我想使用 C 预处理器或可能有任何编译器标志(GCC)按值对它们进行排序?
例如:
sometype S[] = {
{somevals, "BOB", someothervals},
{somevals, "ALICE", someothervals},
{somevals, "TIM", someothervals},
}
必须这样排序:
sometype S[] = {
{somevals, "ALICE", someothervals},
{somevals, "BOB", someothervals},
{somevals, "TIM", someothervals},
}
已解决
好的,这是我的解决方案:
- 手动将每个数组复制并粘贴到名为 tobesorted.c 的临时文件中
- 按第 2 列排序:
sort -b -i --key=2 tobesorted.c
- 将输出复制并粘贴回原始文件。
实际上,如果有可能直接从预处理器调用“排序”会很好(我曾希望至少 GCC 以某种方式支持此类功能,但似乎不支持)。
最佳答案
这样做。
将您的巨型数组放入文件中。
使用内置的
对文件进行排序sort
编写一个小程序以从文件创建 C 代码。写C程序的C程序就可以了。您可以使用 Python 和它的一些很酷的模板包来简化这项工作。
编译剩余程序,该程序由转换为 C 代码的排序文件和程序的其余部分组成。
关于c - 是否可以使用预处理器对数组进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2629219/