C++ 数组在for循环后丢失数据
我有以下代码:C++ 数组在for循环后丢失数据,c++,arrays,data-loss,C++,Arrays,Data Loss,我有以下代码: cin >> r >> c; char map[c][r]; for(int i = 0; i < r; i++) { string line; cin >> line; for (int j = 0; j < c; ++j) { map[j][i] = line[j]; } } int n; cin >> n; //cout << "first " <
cin >> r >> c;
char map[c][r];
for(int i = 0; i < r; i++)
{
string line;
cin >> line;
for (int j = 0; j < c; ++j) {
map[j][i] = line[j];
}
}
int n;
cin >> n;
//cout << "first " << endl << map[0][0] << endl<< map[1][0] << endl<< map[2][0] << endl<< map[3][0] << endl;
pair<pair<int, int>, pair<int,int>> queries[n];
for (int k = 0; k < n; ++k) {
int r1, c1, r2, c2;
cin >> r1 >> c1 >> r2 >> c2;
queries[n] = make_pair(make_pair(r1-1, c1-1), make_pair(r2-1, c2-1));
}
cout << "test" << endl;
cin>>r>>c;
字符映射[c][r];
对于(int i=0;i>线路;
对于(int j=0;j>n;
//问题一:
cin >> r >> c;
char map[c][r];
后来:
pair<pair<int, int>, pair<int,int>> queries[n];
问题3:
另一个未定义的行为
pair<pair<int, int>, pair<int,int>> queries[n]; // better use std::vector
for (int k = 0; k < n; ++k) {
...
// Out of bounds queries[n]
queries[n] = make_pair(make_pair(r1-1, c1-1), make_pair(r2-1, c2-1));
成对查询[n];//更好地使用std::vector
对于(int k=0;k
最后一个可能会破坏map
数组。越界访问很可能与map
的某些元素位于同一内存位置。不知道,但您知道char-map[c][r]在C++中,C++的数组边界必须是编译时常数。尝试使用向量代替.<代码>…查询[n];
是出于同样的原因。显然,你使用名字空间STD;<代码> > <代码> >但是你也使用<代码> map < /C>作为变量名。这是“有趣的事情”。当std::map
进入游戏时等待发生。无论如何,如果你能把它变成一个(读:我们可以把它扔进,或类似的东西,然后编译),我们可能会进一步帮助你。另外,行[j]
上没有检查越界访问,但这些都不能解释你看到的问题。这应该是查询[k]
而不是查询[n]
?(我真的不知道你想做什么,所以我不能说这是错的)。我不敢相信我错过了。
for(int i = 0; i < r; i++)
{
string line;
cin >> line;
for (int j = 0; j < c; ++j) {
map[j][i] = j < line.length() ? line[j] : '\0';
}
}
pair<pair<int, int>, pair<int,int>> queries[n]; // better use std::vector
for (int k = 0; k < n; ++k) {
...
// Out of bounds queries[n]
queries[n] = make_pair(make_pair(r1-1, c1-1), make_pair(r2-1, c2-1));