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

标签 c++ c stl gnome singly-linked-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。您可能还会看到编译时间略有增加。

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

关于c++ - Gnome 的 gslist 比 std::forward_list 有什么优势?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37367381/

相关文章:

c++ - Purify 在使用 std::list::remove() 时揭示了潜在的空闲内存读取

c++ - mupdf - 错误的宏

javascript - 选择最佳样本集来近似具有预定样本数的曲线?

c++ - 运算符过载测试失败

c - "The usage of semaphores is subtly wrong"

检查数组是否入界或出界

c - 如何仅使用指针重写这个 strcpy() 函数?

c++ - 有没有更有效的方法从流中设置 std::vector ?

c++ - 子类化的 STL list<T>::reference 编译错误

c++ - 如何在 ref 密封类中同时实现 IBuffer 和 IBufferByteAccess? (C++/客户体验)