Я писал программу на C ++, где мне нужно иметь двумерную сетку указателей, которые указывают на объекты, которые хранятся в векторе. Я протестировал некоторую часть программы и увидел странные результаты в выводе.
Я изменил объекты на целые числа и удалил все несущественное, чтобы сократить его до приведенного ниже фрагмента кода, но я все еще получаю странный вывод.
vector<vector<int*>> lattice(10, vector<int*>(10));//grid of pointers
vector<int> relevant;//vector carrying actual values onto which pointers will point
for(int i = 0; i<10; i++){
int new_integer = i;
relevant.push_back(new_integer);//insert integer into vector
lattice[0][i] = &relevant[i];//let pointer point onto this value
}
//OUTPUT
for(int j = 0; j<10; j++){
cout<<*lattice[0][j]<<" ";
cout<<relevant[j]<<endl;
}
Я получаю странные выводы, такие как this:
19349144 0
19374040 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
Кроме того, мой вывод меняется от прогона к прогону и зависит от того, насколько большой / маленький я делаю свою сетку.
Я бы ожидал, что все значения слева и справа будут быть равным, я думаю, что есть что-то фундаментальное в указателях, которые я не понял, поэтому извините, если это очень простой c вопрос.
Может кто-нибудь объяснить, почему я получаю странные выходные данные для некоторых значений сетка