私はいくつかのCコードを持っています。そこには2つのリンクリスト(たとえばAとB)があり、Aは特定の位置でBに挿入され、Aにはまだ要素があります。
C ++ STLを使用して同じ動作を効果的にシミュレートするにはどうすればよいですか?スプライスを試してみると、2番目のスプライスが空になります。
ありがとう、ゴクル。
私はいくつかのCコードを持っています。そこには2つのリンクリスト(たとえばAとB)があり、Aは特定の位置でBに挿入され、Aにはまだ要素があります。
C ++ STLを使用して同じ動作を効果的にシミュレートするにはどうすればよいですか?スプライスを試してみると、2番目のスプライスが空になります。
ありがとう、ゴクル。
挿入してみてください:
B.insert( position, A.begin(), A.end() );
'position'の前にAの要素のコピーをBに挿入します。A自体は変更されません。このリンクを参照してください
要素をコピーする必要があります。次のようなことを考えてみてください。
std::copy(a.begin(), a.end(), std::inserter(b, b_iterator));
同じノードを2つのリストで共有したい場合、これは単にサポートされていませんstd::list
(STLコンテナーは常に排他的な所有権を持っています)。リストにポインタを格納するか、boost::ptr_list
内部にポインタを格納するがより優れたAPIを提供するを使用することで、要素の重複を回避できます。