2016-05-21 8 views
1

1990年代のCコードを更新してC++に変換しています。元のコードは、Gnome's gslist(単独リンクリスト)に大きく依存しています。私はgslistがオブジェクト指向のコードに統合するのが非常に面倒であることを知っています。だから、これらのリストをC++の標準テンプレートライブラリのstd::listまたはstd::forward_listに変換したいと思っています。std :: forward_listよりGnomeのgslistに利点がありますか?

STLに移行しない代わりに、Gnomeを使用する理由がありますか(パフォーマンス、移植性など)?

+3

必要に応じて、単に 'gslist'の代わりに' std :: vector'を使うこともできます。 –

+0

@DietrichEpp:はい、私はコードを見てきました。 'std :: vector'ははるかにクリーンで、より明確で、簡単な方法です。 –

答えて

2

std::listに置き換えることは、単独リンクリストを2重リンクリストに変更することを避けるでしょう。しかし、私はstd::forward_listも同様に動作すると思いますが、オブジェクトのサイズによってはgslistに格納されているため、わずかなパフォーマンスの違いも見られるかもしれません。これは、std::forward_listの標準アロケータの代わりにスライスアロケータを使用しているためです。

C++をまだ使用していない場合は、移植性の観点から、すべてのプラットフォームにC++コンパイラがあるわけではないので、C++ソリューションを使用したくない場合があります。しかし、Gnomeをプラットフォーム用にコンパイルできれば、まともなC++コンパイラも同梱されると思います。

STL依存関係を追加することで、STLをまだ使用していない場合は、実行可能ファイルサイズを増やすことができます。コンパイル時間がわずかに増加することもあります。

実際に知る唯一の方法は、プロファイリングを行うことです。

+0

ありがとう@Zack。このプロジェクトはC++で初めから構築されており、既に他のコンポーネントでSTLを使用しているので、私はgslistから移行する予定です。質問が私の満足に答えました! –

関連する問題