我需要用特定值填充向量。我发现下面的代码有效,但a.size()
未能从0更改。添加调整大小调用后,我把元素需要几乎两倍。看来应该有一个O(1)的方式来更新大小,因为我不需要改变任何元素。在那儿?我应该不打扰吗?std ::向量大小在保留和填充后不会更新
#include <iostream>
#include <vector>
#include <math.h>
using namespace std;
int main()
{
int n = 1e9;
vector<float> a;
a.reserve(n);
for (int i=0; i<n; i++)
a[i] = i;
cout << a[2]; //successfully prints as 1
cout << a.size(); //confusingly prints as 0
}
编辑:这不是重复的,因为链接的问题没有解决基准问题。它只是要求保留区域的差异和调整大小,这是我没有问的。此代码的工作原理很快,但会产生令尺寸()不正确的丑陋副作用。“
这是* *重复。您的代码已损坏。它现在在你的机器上工作的事实是无关紧要的:你访问单元化内存。 – Ven