mar*_*zzz 1 c++ vector stdvector
这是代码:
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)后,我仍然可以访问其数据.这是正常的吗?
参考说元素将被"销毁",但它似乎并不意味着"默认/空"值.
在其他语言中,我会在运行时收到"超出范围"的错误消息...
它似乎并不意味着"默认/空"值.
是的,这只是UB.
注意std::vector::operator[]不执行边界检查,同时std::vector::at()执行,并且std::out_of_range将针对该情况抛出类型的异常.
| 归档时间: |
|
| 查看次数: |
116 次 |
| 最近记录: |