在c ++中返回两个值对

时间:2018-03-31 14:51:11

标签: c++ algorithm

我有这个问题。代码块错误: 无法转换&#st; :: pair'到' int'作为回报| 我无法在函数中返回两个值。我怎样才能做到这一点? 我也尝试构建结构,但同样的错误......

代码:

int wyszukanieKR(char **tablica, char **wzorzec)
{
    pair <int, int> wspolrzedne;
    int hash_wzorzec = _hash(0, 0, 9, 3, wzorzec);
    int hash_tablica = 0;

    for(int i = 0; i < 84-9; i++)
    {
        for(int j = 0; j < 13-3; j++)
        {
            hash_tablica = _hash(i, j, 9, 3, tablica);
            if(hash_wzorzec == hash_tablica)
            {
                bool znalazlem = false;
                for (int k = 0; k < 9; k++)
                {
                    for (int l = 0; l < 3; l++)
                    {
                        if (tablica[k+wspolrzedne.first][l+wspolrzedne.second] != wzorzec[k][l])
                            break;
                        if(k ==9 - 1 && l == 3 - 1)
                            znalazlem = true;
                    }
                }
                if(znalazlem)
                {
                    //cout<<"["<<wspolrzedne.first<<"]"<<"["<<wspolrzedne.second<<"]";
                    //return wspolrzedne;

                }
                licznik = licznik+1;
            }
            wspolrzedne.first++;
        }
        wspolrzedne.first = 0;
        wspolrzedne.second++;
    }
    //cout<<"["<<wspolrzedne.first<<"]"<<"["<<wspolrzedne.second<<"]";
    return wspolrzedne;

2 个答案:

答案 0 :(得分:2)

您的问题不是您不能退回两件物品,而是您的退货与您的功能声明不符。您将其声明为int,然后尝试返回pair<int,int>。这些不一样,所以当编译器尝试返回一个时,它与另一个不匹配,并给你错误。您需要做的是选择要返回的值或将声明更改为

std::pair<int, int> wyszukanieKR(char **tablica, char **wzorzec)

您的总功能应如下所示:

std::pair<int, int> wyszukanieKR(char **tablica, char **wzorzec)
{
    // Function Body
    return wspolrzedne; //pair<int, int>
}

答案 1 :(得分:0)

见:

std::pair<int, int> wyszukanieKR(char **tablica, char **wzorzec)
{
  /* analysis */

  return std::make_pair<int,int>(pozycja_x,pozycja_y);
}

在主要内容中你可以使用:

std::pair<int,int> result = wyszukanieKR(...);
std::cout << result.first << "  " <<result.second << "\n";