我实例化了一个std::vector foo(1000).
foo.size()现在是1000,foo.capacity()也是1000.
如果我清除矢量foo.clear(),size()现在是0,但是什么是capacity()?标准是否对此有所说明?
这是代码:
vector<double> samples;
int main()
{
samples.resize(100);
for(int i=0; i<100; i++) {
samples[i]=i/100.0;
}
samples.clear();
cout << "vector size: " << samples.size() << endl;
cout << "... but samples[9]=" << samples[9] << endl;
}
Run Code Online (Sandbox Code Playgroud)
并输出它:
vector size: 0
... but samples[9]=0.09
Run Code Online (Sandbox Code Playgroud)
清除向量(大小为0)后,我仍然可以访问其数据.这是正常的吗?
参考说元素将被"销毁",但它似乎并不意味着"默认/空"值.
在其他语言中,我会在运行时收到"超出范围"的错误消息...
需要帮助..请告诉我为什么"A.clear()"也没有清除第一栏?.................................................. ......
#include <iostream>
#include <vector>
using namespace std;
int N, M;
vector< vector<int> > A;
int main()
{
cin >> N >> M;
A.resize(N + 2);
for (int i = 0; i <= N; ++i)
{
A[i].resize(M + 2);
}
A.clear();
for (int i = 0; i <= N; ++i)
{
for (int j = 0; j <= M; ++j)
{
cout << A[i][j] << ' ';
}
cout << '\n';
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)