我正在更新一些 1990 年代的 C 代码并将其转换为 C++。原始代码在很大程度上依赖于 Gnome's gslist
(单链表)。我发现 gslist
很难集成到我的面向对象代码中,所以我真的很想将所有这些列表转换为 C++ 标准模板库的 std::list
或 std::forward_list
。
有什么好的理由(性能、可移植性等)不迁移到 STL 而坚持使用 Gnome?
最佳答案
我会避免将 gslist
替换为 std::list
,因为那样会将单向链表更改为双向链表。但是,我想 std::forward_list
会执行类似的操作,但是根据您存储在 gslist
中的对象的大小,您可能会看到轻微的性能差异,因为出色地。这是因为 glib 使用切片分配器而不是 std::forward_list
的标准分配器。
如果您还没有使用 C++,从可移植性的角度来看,您可能不想使用 C++ 解决方案,因为并非所有平台都有 C++ 编译器。但是,如果您可以为平台编译 Gnome,我想它也会附带一个像样的 C++ 编译器。
我能想到的另一件事是添加 STL 依赖项可能会增加可执行文件的大小,如果您还没有使用 STL。您可能还会看到编译时间略有增加。
唯一真正了解的方法是进行一些分析。
关于c++ - Gnome 的 gslist 比 std::forward_list 有什么优势?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37367381/