0 c++
需要帮助..请告诉我为什么"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)
A.clear()确实清除了数组,结果是A包含零元素.这与将每个元素设置为零不同.
您的代码具有未定义的行为,因为后A.clear()循环访问现在为空向量末尾的元素.事实上,内存仍然可以访问并且仍然包含旧数据.但是,并不能保证这种情况.
如果使用正确的维度进行迭代,则会看到它A为空:
for (int i = 0; i < A.size(); ++i)
{
for (int j = 0; j < A[i].size(); ++j)
{
cout << A[i][j] << ' ';
}
cout << '\n';
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2078 次 |
| 最近记录: |