来自 http://www.cplusplus.com/reference/utility/pair/ ,我们知道std::pair
有两个成员变量first
和second
。
为什么 STL 设计者决定公开两个成员变量,first
和 second
,而不是提供 getFirst()
和 getSecond()
?
最佳答案
对于原始的 C++03 std::pair
,访问成员的函数将没有用处。
从 C++11 和更高版本开始(我们现在是 C++17,C++20 很快就会出现)std::pair
是 的一个特例std::tuple
,其中 std::tuple
可以有任意数量的项目。因此,有一个参数化的 getter 是有意义的,因为发明和标准化任意数量的项目名称是不切实际的。因此您可以使用 std::get
也适用于 std::pair
。
因此,设计的原因是历史性的,即当前的 std::pair
是向更通用化发展的最终结果。
在其他新闻中:
关于
” As far as I know, it will be better if encapsulating two member variables above and give a
getFirst();
andgetSecond()
不,那是垃圾。
这就像说锤子总是更好,无论您是用钉子钉钉子、用螺钉固定还是修剪一 block 木头。尤其是在最后一种情况下,锤子并不是有用的工具。锤子可能非常有用,但这并不意味着它们总体上“更好”:这只是胡说八道。
关于c++ - 为什么 std::pair 暴露成员变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37835248/