在C 中返回两个值对

Returning two values pair in c++

本文关键字:两个 返回      更新时间:2023-10-16

我对此有问题。CodeBlocks错误:无法将" std :: 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;

您的问题不是您不能返回两个项目,而是您的返回与您的函数声明不符。您将其声明为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>
}

请参阅此:

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";