【发布时间】:2012-01-26 01:15:54
【问题描述】:
在我的程序中有很多地方我需要访问和修改 std::map 数据结构。现在我有一个名为 getMap() 的方法,它本质上返回对 std::map 的引用。我正在考虑将迭代器返回到 std::map 而不是映射本身,以获得更好的封装和性能。就封装和性能而言,做这样的事情还是返回地图与返回迭代器一样好是个好主意吗?
【问题讨论】:
-
我会从面向对象的角度说这是糟糕的设计。最好是保存地图的类具有可以执行您需要的操作的方法。
-
这样返回迭代器对你没有任何好处。提前考虑如何接收迭代器: std::map
::iterator it = getMapIterator();请注意,您已经重新声明了映射(语法方面)。如果您想节省一些打字时间 - 这不是解决问题的方法。当然,您可以 typedef 声明,但这只会增加更多的混乱。应用程序的不同部分持有不同的迭代器 - 事情会变得非常混乱。考虑做出坚定的决定,坚持使用对地图的引用,而不是返回迭代器