我正在更新一些1990年代的C代码并将其转换为C ++。原始代码在很大程度上依赖于Gnome's gslist
(单链表)。我发现gslist
非常麻烦,无法集成到面向对象的代码中,所以我真的很想将所有这些列表转换为C ++标准模板库的std::list
或std::forward_list
。
有没有很好的理由(性能,可移植性等)不迁移到STL,而是坚持使用Gnome?
答案 0 :(得分:2)
我会避免将gslist
替换为std::list
,因为这会将单个链接列表更改为双向链接列表。但是,我认为std::forward_list
的执行效果相似,但根据您在gslist
中存储的对象的大小,您可能会看到轻微的性能差异。这可能是因为glib使用切片分配器而不是std::forward_list
的标准分配器。
如果您还没有使用C ++,从可移植性的角度来看,您可能不想使用C ++解决方案,因为并非所有平台都有C ++编译器。但是,如果你可以为一个平台编译Gnome,我想它也会附带一个不错的C ++编译器。
我能想到的另一件事是,如果你还没有使用STL,那么添加STL依赖可能会增加可执行文件的大小。您可能还会看到编译时间略有增加。
唯一真正知道的方法是做一些分析。