如何使用“{ x,y}”向队列中传入二位数组元素(x,y)?

在使用某博主关于BFS算法求解(迷宫)最短路径问题时,我看到了这样几条语句,并提出了我的疑问。

1typedef pair<int, int> PII;//pair<int,int>?2)queue<PII> q;//队列中使用二维数组作为元素?3) q.push({0,0});//怎么push一个二维的数组元素(x,y)4auto t=q.front();//哪里来的auto?

我尝试在dev上运行,以下是完整的代码,和我在CSDN上找到的关于使用“{}”返回等的错误改写(其后用“//”标识),但是任然没有解决问题。

#include <iostream>
#include <cstring>
#include <algorithm>
#include <queue>
//#include <bits/stdc++.h>
using namespace std;
//add_definitions("std=c++11");
typedef pair<int, int> PII;//
const int N = 110;
int s[N][N];
int n,m;
int g[N][N];
int bfs()
{
    queue<PII> q;//
    memset(g, -1, sizeof g);//
    q.push({0,0});//
    g[0][0]=0;
    int dx[4] = {-1, 0, 1, 0}, dy[4] = {0, 1, 0, -1};//
    while(q.size())
    {
        auto t=q.front();//
        q.pop();
        for(int i=0;i<4;i++)
        {
            int a=t.first+dx[i];
            int b=t.second+dy[i];
            if(a>=0 && a<n && b>=0 && b<m && g[a][b]==-1 && s[a][b]==0)//
            {
                g[a][b]=g[t.first][t.second]+1;
                q.push({a,b});//
            }
        }
    }
    return g[n-1][m-1];
}
int main()
{cin>>n>>m;
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
cin>>s[i][j];
cout<<bfs()<<endl;
}

以下是报错内容截图:

img

以下是我在搜索过后找到的解决方案。(我没看懂、用了方法也没有成功)

C++ warning: extended initializer lists only available with -std=c++11 or -std=gnu++11 return {i,j}_m0_46334316的博客-CSDN博客 C++ vector return{} 返回错误在解答LeetCode两数之和的题目使用{}返回vector出现了错误部分源代码 int array1[4] = {2,7,11,15}; int array2[3] = {3,2,4}; int array3[2] = {3,3}; int target1 = 9; int target2 = 6; int target3 = 6; Solution s; vector<int&g https://blog.csdn.net/m0_46334316/article/details/116431816?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163650113416780264018681%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=163650113416780264018681&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-3-116431816.first_rank_v2_pc_rank_v29&utm_term=%5Bwarning%5D+extended+initializer+lists+only+available+with+-std%3Dc%2B%2B11+or+-std%3Dgnu%2B%2B11&spm=1018.2226.3001.4187

总结一下我的问题在于:
(1)不晓得该怎么传{x,y}到队列里面。
(2)auto的用法在这里为什么行不通?
(3)c++11中头文件<bits/stdc++.h>据说是包括了很多头文件……那在这个地方,可以只写它吗?

估计你的编译器不支持c++11标准,或者你么有打开你的编译器的C++11标准的开关,如果不支持的话可以用以下语句
q.push(make_pair(1,1));
替代