假设一个包含std :: pair类型项目的std :: pair的结构体。如何使用默认值初始化std :: std :: vector对的固定长度?
block<key_t, value_t> b(*this);
std::pair<key_t, value_t> item = std::pair<key_t, value_t>(k, v);
b.items[0] = item;
稍后在代码中,我要遍历向量,并期望&bucket_item != NULL
是真实的,只有在:
struct block {
std::vector<std::pair<key_t, value_t>> items;
block(const Data& d) : items()
{
items = std::vector<std::pair<key_t, value_t>>(d.size_);
}
};
代码后来,我在位置0值分配给矢量位置0,因为我只在这个位置分配了一个值。实际上,&bucket_item != NULL
总是如此。
for (std::pair<key_t, value_t> item : b.items)
{
if (&item != NULL)
{
...
}
}
我不能初始化NULL值的向量像这样:
items = std::vector<std::pair<key_t, value_t>>(d.size_, NULL);
如何解决这个问题?
'NULL'是一个指针,所以你需要做的矢量保持指向'std :: pair'的指针,并自己进行内存管理。 – jhnnslschnr