在我的程序中有很多地方需要访问和修改 std::map 数据结构。现在我有一个名为 getMap() 的方法,它实际上返回对 std::map 的引用。我正在考虑将迭代器返回到 std::map 而不是映射本身以获得更好的封装和性能。就封装和性能而言,这样做是个好主意还是返回映射与返回迭代器一样好?
最佳答案
如果您真的只需要对 map
的引用,那么为什么要返回迭代器?
如果您需要指向 map 的特定部分,迭代器并不总是封装得很好(它们是常量吗?反向?随机访问..?您的调用例程可能希望免受此类细节的影响,并且裸迭代器不提供这种保护)。 boost::range
可能会提供更好的解决方案。
对于其他一些容器(例如 vector),如果另一个例程在使用之前修改了容器,迭代器将失效。根据程序的语义,您可能认为这会破坏封装。
关于c++ - 当需要访问容器时返回迭代器而不是底层容器本身,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8603166/