Как передать двухмерный вектор в функцию с помощью C ++ - PullRequest
0 голосов
/ 05 мая 2018
struct st
{
    int to, cost;
};

void fun(vector<st>&v1[10])
{
    vector<st>v2[10];
    v1=v2;
}

int main()
{
    vector<st>arr[10];
    fun(arr);
}

Я хочу передать двухмерный вектор в функцию по ссылке и заменить вектор на другой вектор в этой функции. Но я получаю ошибку. Я не хочу делать это с парным вектором. Я хочу использовать структуру здесь. Как это сделать?

вот скриншот моей ошибки messege

1 Ответ

0 голосов
/ 05 мая 2018

Одна серьезная проблема: при передаче массива в качестве аргумента на самом деле передается указатель .

Это можно легко решить, используя std::array вместо:

void fun(std::array<std::vector<st>, 10>& v1)
{
    std::array<std::vector<st>, 10> v2;
    // Initialize v2...
    v1 = v2;
}

int main()
{
    std::array<std::vector<st>, 10> arr;
    fun(arr);
}

После введения std::array выше, я бы рекомендовал возвращать массив вместо передачи по ссылке:

std::array<std::vector<st>, 10> fun()
{
    std::array<std::vector<st>, 10> v2;
    // Initialize v2...
    return v2;
}

int main()
{
    std::array<std::vector<st>, 10> arr = fun();
}
...