Как напечатать набор (STL) с парой (STL) в качестве типа данных? - PullRequest
0 голосов
/ 18 марта 2019

Я хочу показать свой ответ пользователю.Мой ответ в Check_Answer SET (STL).Чья декларация выглядит следующим образом:

typedef pair<int,int> Ans;
set<Ans>Check_Answer;

Теперь я передаю его в функцию для отображения ответа, и это выглядит так:

void showanswer(set<Ans>Check_Answer){
    set<Ans>::const_iterator itr;
    cout<<"Answer:"<<endl;
    for(itr = Check_Answer.begin();itr!=Check_Answer.end();itr++){
        cout<<itr->first<<" "<<itr->second<<endl;
    }
} 

Мне трудно разобратьсякак отобразить ответ.

Ожидаемый результат должен быть таким:

0 0

0 1

0 2

1 2 ...

В основном, печать значений int, которые являются индексами матрицы.

Фрагмент функции, в которой используется Check_Answer:

 void tracePath(cell cellDetails[][COL], Pair dest, int grid[][COL],Pair src )
{
int x_cor,y_cor=51;
    printf ("\nThe Path is ");
    int row = dest.first;
    int col = dest.second;

    stack<Pair> Path;

    while (!(cellDetails[row][col].parent_i == row
            && cellDetails[row][col].parent_j == col ))
    {
        Path.push (make_pair (row, col));
        int temp_row = cellDetails[row][col].parent_i;
        int temp_col = cellDetails[row][col].parent_j;
        row = temp_row;
        col = temp_col;
    }
    int ans;
    Path.push (make_pair (row, col));
    set<Ans>Answer;
    set<Ans>Check_Answer;
    while (!Path.empty())
    {
        pair<int,int> p = Path.top();
        Path.pop();
        Check_Answer.insert(make_pair(p.first,p.second));
    }
    int i,x,y,Key;
    int a= src.first, b=src.second;
    cout<<"You have \x03 Lifelines"<<endl;
    cout<<"Enter -1,-1 to terminate answer"<<endl;
    while(true){
            cin>>Key;
            if(Key==0)
                a=b=-1;
            else if(Key==8){
                a=a-1;
            }
            else if(Key==2){
                a=a+1;
            }
            else if(Key==6){
                b=b+1;
            }
            else if(Key==4){
                b=b-1;
            }
            else if(Key==9){
                a=a-1;
                b=b+1;
            }
            else if(Key==7){
                a=a-1;
                b=b-1;
            }
            else if(Key==3){
                a=a+1;
                b=b+1;
            }
            else if(Key==1){
                a=a+1;
                b=b-1;
            }

            if(a==-1 && b==-1){
               break;
                }
            else if(grid[a][b]==0){
                cout<<"You cannot make IAF jets flyover pakistan governed territory!!\n";
                y_cor+=2;
                continue;
            }
            else {
                x=9*b;
               y=3+(5*a);
                    for(i=0;i<4;i++)
            {
               gotoxy(x,y);
               cout<<"\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1";
               y++;
            }
                gotoxy(0,y_cor);
                Answer.insert(make_pair(a,b));
            }
        }
    if(Answer == Check_Answer)
        cout<<"BOOM BOOM BOOM!!\n\nJ-e-M camp has been eradicated."<<endl;
    else {
        cout <<"Oops This was no brainer dude! Anyway Try again next time :p"<<endl;
        cout<<"Do you want to know the answer(Y/N):"<<endl;
        cin>>ans;
        if(ans=='y'||ans=='Y')
         showanswer(Check_Answer);
    }
}

При вводе правильных значений проблем не возникает, но при попытке отобразить ответ значения не печатаются. введите описание изображения здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...