0

挿入関数を実装すると、一般的pair<iterator,bool>に返されるのはstlライブラリです。私はstlのようなクラスを実装しています。ペアでイテレータをローカル変数として返すことができます。

itartor it;//init it
return pair<iterator,bool>(it,true);

または、イテレータを動的に割り当てる必要があります。

itartor it = new iterator;
return pair<iterator,bool>(*it,true);
4

3 に答える 3

2

イテレータを値で返します。イテレータは、軽量でコピー可能になるように設計されています。

于 2012-11-12T18:40:45.930 に答える
2

最初のオプションを使用する必要があります。とにかくポインタを逆参照しているので、2番目の理由は何もありません。そして、メモリリーク:

iterator it = new iterator;
return pair<iterator,bool>(*it,true);
                             ^ dereference here -> memory leak.

標準ライブラリイテレータは、値で渡されるように設計されています。イテレータのコピーが安価であることを確認し、動的メモリ管理の落とし穴をすべて回避する必要があります。

于 2012-11-12T18:42:17.643 に答える
0

自分が何をしているかを理解していない限り(そして適切に処理できる場合を除いて)、動的に割り当てられたコンテンツを返さないでください。そのため、最初のものを使用してください。

ここでポインタを返すことさえできないという事実を考えると、これは機能しません(コード例では、割り当てられたオブジェクト/メモリのコピーを作成します)。

于 2012-11-12T18:42:52.180 に答える