34

使用具有两个字段和一对的结构在内存分配和效率方面有什么区别?

4

6 回答 6

26

std::pair提供预先编写的构造函数和比较运算符。这也允许它们存储在 std::map 之类的容器中,而无需编写,例如,复制构造函数或严格的弱排序 via operator <(例如 required by std::map)。如果你不写它们,你就不会犯错(还记得严格的弱排序是如何工作的吗?)所以只使用std::pair.

于 2010-02-10T11:01:03.173 回答
21

std::pair带有许多构造函数和运算符。

一个struct允许命名字段(除了firstand 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>;

参看。C++ 参考。获取更多文档。

于 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 回答