我想在缓冲区中预先设置矢量的大小。但我不知道究竟是什么类型的大小。毕竟,std :: size_t不能是固定大小。在我看来,我打算用uint64_t代替。然后缓冲区会这样:
8 bytes length | 4 bytes element1 | 4 bytes element2 | ... |
现在问题是uint64_t并不意味着std :: size_t。任何更好的想法将不胜感激。
答案 0 :(得分:1)
您可以使用您想要的任何类型,只要它可以保存您正在使用的值。因为它已经是size_t
,所以请保持这种状态。确定要用于表示值的字节数以及每个字节需要的值,并编写代码以正确编码/解码每个字节。
答案 1 :(得分:1)
你快到了。目前没有平台使用size_t大于64位(并且需要几天才能将64位的int32转移到实验性的100TBit光纤上)。步骤是:
const uint64_t len = vec.length();
请注意,最后两个步骤必须在一个循环中超过几千个元素..