Я пытаюсь создать функцию в C++, которая возвращает 2D-вектор. Функция также имеет двумерный вектор в качестве аргумента, идея заключается в возврате модифицированной версии этого 2D-вектора с функцией.C++ Как сделать функцию 2D-вектор?
не приложу весь свой код здесь, как это было бы полностью от вопроса, но подытожить функция выглядит следующим образом:
using std::vector;
vector<vector<char> > function(vector<vector<char> > grid) {
int width = static_cast<int>(grid.front().size());
int height = static_cast<int>(grid.size());
for(int y=0; y < height; ++y)
{
for(int x=0; x < width; ++x)
{
grid[y][x]= 'H';
}
}
return grid;
}
И я бы тогда сделать в главной:
vector<vector<char> > new_grid = function(grid);
Но он не работает так, как я использую его, поэтому у меня есть несколько вопросов:
- Должен ли инициализироваться размер двумерной векторной функции?
- Могу ли я изменить размер
grid
внутри функции и вернуть более крупный 2D-вектор? - И это может быть глупый вопрос, но действительно ли возможно получить значение, массив, строку, в функции без использования возврата, в функции void?
Благодарим за помощь!
Я могу показать весь свой код, если вы хотите, но он довольно большой и может быть не так ясен.
Как это сделать * не работает *? – NathanOliver
Перед доступом к любым векторным элементам с помощью оператора '[]' вам нужно использовать функцию 'resize()'. –
, если 'grid.size() == 0', вызов [grid.front()] (http://en.cppreference.com/w/cpp/container/vector/front) - это UB. –