У меня есть функция, которая помещает указатель в массив указателей 10x10 std ::.Я создал глобальный вектор, который содержит целые числа и имеет функцию, которая создает новые целые, помещает их в вектор и назначает их адрес в сетке.Когда я пытаюсь получить доступ к сетке, я получаю нежелательное значение, даже если все мои значения должны быть инициализированы.
Я не уверен, где моя ошибка.Я проверил вектор и все мои созданные корабли там.Поскольку мои объекты еще живы, я не понимаю, почему мой указатель не работает.
#include <iostream>
#include <array>
#include <vector>
using namespace std;
using grid = array<array<int*, 10>, 10>;
vector<int> my_special_ints{};
grid fill_grid(int* val) {
grid g;
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
g[i][j] = val;
}
}
return g;
}
void modifying_function(grid& g) {
for (int i = 0; i < 10; i++) {
int temp_int = i + 10;
my_special_ints.push_back(temp_int);
g[i][0] = &my_special_ints.back();
}
}
int main()
{
int empty_int = -1;
grid ptr_arr = fill_grid(&empty_int);
modifying_function(ptr_arr);
cout << *ptr_arr[1][0]; // junk value
}