【发布时间】:2019-04-01 09:10:19
【问题描述】:
我需要在std::vector 中保留 x 个元素,比如 10。然后我需要在其中写入一些 y 个值,比如 5(大部分时间 y
示例: 假设我分配了 10 个元素
std::vector<int> v(10);
但我只填充了其中的 7 个元素
for (unsigned i = 0; i<7; i++)
v[i] = i;
我如何判断 7 个元素已被填充,而我还有 3 个可用?
我试过跑步
v.size() 和 v.capacity() 但都返回 10。
【问题讨论】:
-
考虑使用
std::vector::reserve和std::vector::push_back方法。 -
但我只填充了其中的 7 个元素 -- 你对“填充”的定义是什么?您声明了一个包含 10 个元素的向量,全部初始化为 0。如果您想要一个只有 7 个项目的向量,则创建一个只有 7 个项目的向量。
-
@PaulMcKenzie 我的动机是为最大数量的元素保留一些空间。元素的实际数量可以小于最大值,但永远不会更多。当我保留 10 个元素时,我不一定关心它们是否被初始化为 0,但是一旦我开始插入元素,我想知道我插入了多少。
-
您没有在示例中进行任何插入。这些“插入”已经在构造函数中完成。你构造一个包含 10 个元素的向量,你得到 10 个元素,所以
v.size()当然返回 10。也许你对向量是什么的想法似乎有点缺陷。 -
但我只填写了其中的 7 个元素 不。您修改其中 7 个元素。
=在这里代表分配。赋值不会创建、分配、填充……它的左侧。它为已经存在的事物赋予了新的价值。