当实现插入函数一般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);
答案 0 :(得分:2)
按值返回迭代器。迭代器的设计重量轻,可以复制。
答案 1 :(得分:2)
您应该使用第一个选项。第二个没有任何理由,因为你无论如何都要取消引用指针。泄漏的记忆:
iterator it = new iterator;
return pair<iterator,bool>(*it,true);
^ dereference here -> memory leak.
标准库迭代器旨在通过值传递。您应确保您的迭代器复制成本低廉,并避免所有动态内存管理陷阱。
答案 2 :(得分:0)
除非您知道自己在做什么(并且能够正确处理),否则不要返回动态分配的内容。因此,请选择第一个。
鉴于您甚至无法在此处返回指针,这将无效(在您的代码示例中,您仍然会创建已分配对象/内存的副本)。