我已经看到两者都用于相同的目的,但我想知道结果会有什么不同(如果有的话)以及为什么会这样使用.
对文档的引用:compressed_pair和tuple.
Dre*_*ann 18
C++要求所有类型的大小大于0如果一个类型可以有一个大小为0,数组索引和其他指针数学会出差错.
class EmptyClass { };
std::cout << sizeof( EmptyClass ); // Prints "1" (typically)
Run Code Online (Sandbox Code Playgroud)
A compressed_pair是两个元素的元组,经过优化后不需要额外存储,因为只有大小为1的类型,因为大小为0是被禁止的.
if ( sizeof( compressed_pair<int,EmptyClass> ) == sizeof(int) )
{
std::cout << "EmptyClass was compressed."; // (This will print)
}
Run Code Online (Sandbox Code Playgroud)
这是通过空基优化实现的.两种类型都放在类包装器中,如果一种类型为"空",则该类成为另一种类的父类.
| 归档时间: |
|
| 查看次数: |
2401 次 |
| 最近记录: |