2

我需要将一些 C++ 代码转换为 C,但我在 STL 容器方面遇到了一些问题。在原始 C++ 代码中,set 容器被用作set< pair<int, int>, sortMapped> mySet;其中 sortMapped 是一个自定义比较器,以通过映射值而不是键值“排序”条目。当然,基本的插入、删除和迭代器也包含在原始 C++ 代码中。

所以我的问题是,有没有人知道这种“始终排序”容器的 C 等价物,我也可以在其中编写自己的比较器?谢谢你。

4

3 回答 3

6

There is no such container within the C language. C does not have nice things like STL and so I think you will just have to write it yourself.

于 2012-09-21T17:07:53.453 回答
2

你有几个选择

  1. 为二叉树编写代码。
  2. 为 B 树编写代码。
  3. 为哈希表编写代码。
  4. 想想用 C 语言编写可能更简单的问题的另一种解决方案。

...而且我可能错过了其他一些数据结构——但这取决于相关数据的性质和用途。

编辑

你总是可以谷歌我上面提到的数据结构来获取代码示例。

于 2012-09-21T17:23:35.527 回答
0

有谁知道这种“始终排序”容器的 C 等价物,我也可以在其中编写自己的比较器?

最简单的,它是一个数组,qsort()每次更改后使用排序。qsort()您可以编写自己的比较器。

使用bsearch(),您可以为其添加功能std::set

从排序后的数组中查找项目真的很便宜。但是插入是相当昂贵的操作。因此,这不是所有时间关键型应用程序的解决方案。

于 2018-06-20T14:35:28.550 回答