Gnome 的 gslist 比 std::forward_list 有什么优势?

Any advantages to Gnome's gslist over std::forward_list?

我正在更新一些 1990 年代的 C 代码并将其转换为 C++。原始代码严重依赖 Gnome's gslist (单链表)。我发现 gslist 集成到我的面向对象代码中非常麻烦,所以我真的很想将所有这些列表转换为 C++ 标准模板库的 std::liststd::forward_list.

有什么好的理由(性能、可移植性等)不迁移到 STL 而坚持使用 Gnome?

我会避免将 gslist 替换为 std::list,因为那样会将单向链表更改为双向链表。但是,我想 std::forward_list 会执行类似的操作,但是根据存储在 gslist 中的对象的大小,您可能也会看到轻微的性能差异。这是因为 glib 使用切片分配器而不是 std::forward_list.

的标准分配器

如果您还没有使用 C++,从可移植性的角度来看,您可能不想使用 C++ 解决方案,因为并非所有平台都有 C++ 编译器。但是,如果您可以为平台编译 Gnome,我想它也会附带一个像样的 C++ 编译器。

我能想到的另一件事是添加 STL 依赖项可能会增加可执行文件的大小,如果您还没有使用 STL。您可能还会看到编译时间略有增加。

唯一真正了解的方法是进行一些分析。