使用具有两个字段和一对的结构在内存分配和效率方面有什么区别?
问问题
4024 次
6 回答
26
std::pair
提供预先编写的构造函数和比较运算符。这也允许它们存储在 std::map 之类的容器中,而无需编写,例如,复制构造函数或严格的弱排序 via operator <
(例如 required by std::map
)。如果你不写它们,你就不会犯错(还记得严格的弱排序是如何工作的吗?)所以只使用std::pair
.
于 2010-02-10T11:01:03.173 回答
21
std::pair
带有许多构造函数和运算符。
一个struct
允许命名字段(除了first
and second
)并且随时可以扩展。
尽可能struct
选择。它可能涉及一些开销,但绝对更容易维护。
于 2010-02-11T14:40:24.647 回答
7
在内存分配和效率方面,没有区别——因为这正是 a 的含义std::pair
。
于 2010-02-10T11:06:02.637 回答
2
由于上面没有提到这一点,如果您想要自己名字的好处,但是 std::pair (或任何其他对象)的优点,您可以使用“使用”(从 c++11 开始)。您可以在命名空间或类声明中设置它。
事实上,这就是我现在有多少课程开始...
using myPair = pair<int,string>;
于 2018-05-01T08:56:57.530 回答
1
在内存分配或效率方面没有区别。事实上,在我使用的 STL 实现中,pair 被定义为struct pair
于 2010-02-10T11:06:27.887 回答
1
如std::pair<int, int> 与具有两个 int 的结构中所述,结构可能会快一点,因为没有进行初始化。
于 2017-07-30T11:35:21.543 回答