use*_*342 2 c++ data-structures
我正在处理一个模板化的键/值存储类,它需要键和值类型,并在内部将它们存储为std::pair.但是,我发现了一个案例,我只想存储一个键,并仍然利用这个类的索引.我需要完全重构这个东西来处理只有一个键而不是一个键/值对(或浪费大量的空间),所以我想知道是否有办法让一个std::pair对象采用一个空结构(或其他东西) ,并且只占用与该对中的其他类型相同的空间量.
我试过这个:
struct EmptyStruct
{
};
Run Code Online (Sandbox Code Playgroud)
跑了这个:
typedef std::pair<int, EmptyStruct> TestPair;
std::cout << sizeof(TestPair) << " vs " << sizeof(int) << "\n";
Run Code Online (Sandbox Code Playgroud)
但得到了这个输出:
8 vs 4
Run Code Online (Sandbox Code Playgroud)
在VC++ 2012中,在"发布"模式下启用了优化,包括/ O1"最小化大小".
有没有办法让一个结构在一个std::pair?的背景下被认为是"无大小的" ?
| 归档时间: |
|
| 查看次数: |
831 次 |
| 最近记录: |