Одна серьезная проблема: при передаче массива в качестве аргумента на самом деле передается указатель .
Это можно легко решить, используя 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();
}