5

私はいくつかのCコードを持っています。そこには2つのリンクリスト(たとえばAとB)があり、Aは特定の位置でBに挿入され、Aにはまだ要素があります。

C ++ STLを使用して同じ動作を効果的にシミュレートするにはどうすればよいですか?スプライスを試してみると、2番目のスプライスが空になります。

ありがとう、ゴクル。

4

2 に答える 2

7

挿入してみてください:

B.insert( position, A.begin(), A.end() );

'position'の前にAの要素のコピーをBに挿入します。A自体は変更されません。このリンクを参照してください

于 2010-02-27T22:06:03.257 に答える
2

要素をコピーする必要があります。次のようなことを考えてみてください。

std::copy(a.begin(), a.end(), std::inserter(b, b_iterator));

同じノードを2つのリストで共有したい場合、これは単にサポートされていませんstd::list(STLコンテナーは常に排他的な所有権を持っています)。リストにポインタを格納するか、boost::ptr_list内部にポインタを格納するがより優れたAPIを提供するを使用することで、要素の重複を回避できます。

于 2010-02-27T21:57:11.857 に答える