Я пытаюсь реализовать очередь массивов в C ++ STL, но всякий раз, когда я помещаю sh новый массив в очередь и пытаюсь получить доступ к началу очереди, он возвращает мне значение последнего добавленного значения массива. Вот код, который я использую;
queue<int*> a;
int temp[2];
temp[0]=1;
temp[1]=1;
a.push(temp);
cout<<"front "<<a.front()[0]<<"back "<<a.back()[0]<<"\n";
cout<<"size: "<<a.size()<<"\n";
temp[0] = 2;
temp[1] = 2;
a.push(temp);
cout<<"front "<<a.front()[0]<<"back "<<a.back()[0]<<"\n";
cout<<"size: "<<a.size()<<"\n";
temp[0] = 3;
temp[1] = 3;
a.push(temp);
cout<<"front "<<a.front()[0]<<"back "<<a.back()[0]<<"\n";
cout<<"size: "<<a.size()<<"\n";
Вот вывод приведенного выше кода: вывод кода
, но я ожидал, что вывод будет следующим:
front 1back 1
size 1
front 1back 2
size 2
front 1back 3
size 3
Кто-нибудь может объяснить, почему он так себя ведет?