test1和内存中的布局是test2一样的吗?
std::vector<std::pair<int,int> > test1;
std::vector<mystruct> test2;
Run Code Online (Sandbox Code Playgroud)
其中 mystruct 定义为:
struct mystruct{
int a;
int b;
};
Run Code Online (Sandbox Code Playgroud)
从逻辑上来说,std::pair<int, int>也应该这样定义。
然而,标准上没有任何内容,而且完全没有保证。您可以查看编译器中的头文件来确认这一点,但这并不能证明任何事情。
注意:如果您认为否则是荒谬的,我可以给您一个例子,说明如何以其他方式定义它。想象一下,在使用 的其他 stl 模板类中std::pair,他们觉得(出于任何原因)有一个指向包含该对的节点的指针,在该对中会很方便。这样,他们就可以在内部添加指向pair类的指针,同时不违反任何规则。你的假设会造成严重破坏。我想说他们不太可能做这样的事情,是的,但只要他们不被迫采取这种布局,任何事情都可能发生。