迭代器实现

时间:2012-11-12 18:38:30

标签: c++ insert iterator

当实现插入函数一般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);

3 个答案:

答案 0 :(得分:2)

按值返回迭代器。迭代器的设计重量轻,可以复制。

答案 1 :(得分:2)

您应该使用第一个选项。第二个没有任何理由,因为你无论如何都要取消引用指针。泄漏的记忆:

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

标准库迭代器旨在通过值传递。您应确保您的迭代器复制成本低廉,并避免所有动态内存管理陷阱。

答案 2 :(得分:0)

除非您知道自己在做什么(并且能够正确处理),否则不要返回动态分配的内容。因此,请选择第一个。

鉴于您甚至无法在此处返回指针,这将无效(在您的代码示例中,您仍然会创建已分配对象/内存的副本)。