在 STL 队列中插入对元素时出错
Error in inserting pair element in STL queue
我有一个元素对队列,我用它在矩形网格上执行 BFS。但是我在队列上进行推送操作时出错,尽管我在其他地方执行类似操作。
代码:
int get_ind(int &ii,int &jj,int i,int j,int x)
{
queue <pair<int,int> > q;
q.push({i,j});
while(!q.empty())
{
int ti = q.front().first;
int tj = q.front().second;
q.pop();
for(int p=-1; p<=1; p++)
{
for(int q=-1; q<=1; q++)
{
ii = ti+p;
jj = tj+q;
if(issafe(ii,jj))
{
q.push({ti+p,tj+q});
if (arr[ii][jj]==x)
return 0;
}
}
}
}
}
错误:
error: request for member 'push' in 'q', which is of non-class type 'int'
q.push({ti+p,tj+q});
您在循环中隐藏 q
:
queue <pair<int,int> > q;
// later
for(int q=-1; q<=1; q++)
在循环中使用不同的变量名。
变量q 已重新声明为int 并且同样用于推送操作。在下面的 for 循环或队列声明中使用不同的变量。
for(int q=-1; q<=1; q++)
{
ii = ti+p;
jj = tj+q;
if(issafe(ii,jj))
{
q.push({ti+p,tj+q});
if (arr[ii][jj]==x)
return 0;
}
}
q的数据类型将是for循环范围内的int。
我有一个元素对队列,我用它在矩形网格上执行 BFS。但是我在队列上进行推送操作时出错,尽管我在其他地方执行类似操作。
代码:
int get_ind(int &ii,int &jj,int i,int j,int x)
{
queue <pair<int,int> > q;
q.push({i,j});
while(!q.empty())
{
int ti = q.front().first;
int tj = q.front().second;
q.pop();
for(int p=-1; p<=1; p++)
{
for(int q=-1; q<=1; q++)
{
ii = ti+p;
jj = tj+q;
if(issafe(ii,jj))
{
q.push({ti+p,tj+q});
if (arr[ii][jj]==x)
return 0;
}
}
}
}
}
错误:
error: request for member 'push' in 'q', which is of non-class type 'int'
q.push({ti+p,tj+q});
您在循环中隐藏 q
:
queue <pair<int,int> > q;
// later
for(int q=-1; q<=1; q++)
在循环中使用不同的变量名。
变量q 已重新声明为int 并且同样用于推送操作。在下面的 for 循环或队列声明中使用不同的变量。
for(int q=-1; q<=1; q++)
{
ii = ti+p;
jj = tj+q;
if(issafe(ii,jj))
{
q.push({ti+p,tj+q});
if (arr[ii][jj]==x)
return 0;
}
}
q的数据类型将是for循环范围内的int。