Я новичок в кодировании на C ++ и сталкиваюсь с очень простой c проблемой. Приведенный ниже код является минимальным примером проблемы.
По сути, я пытаюсь добавить вектор указателей. В приведенном ниже коде желаемый результат - три разных указателя в векторе. Однако всякий раз, когда я добавляю указатель на вектор, он перезаписывает все записи вектора, содержащие этот же указатель.
Вывод, который я получаю:
121
-500 -500
30 30 30
Требуется вывод :
121
121 -500
121 -500 30
Кажется, это действительно глупо, но я не уверен, как go исправить это! Мы будем благодарны за любую помощь.
#include <iostream>
#include <vector>
#include <array>
#include <iterator>
#include <list>
static std::vector<std::array<int, 2> *> heap_array;
void insert_into_heap(int num){
static std::array<int, 2> test;
test[0] = num;
heap_array.push_back(&test);
}
void print_heap(){
std::vector<std::array<int, 2> *>::const_iterator it;
for(it = heap_array.begin(); it != heap_array.end(); ++it){
std::cout << (*(*it))[0] << " ";
}
std::cout << "\n";
}
int main(int argc, char** argv){
insert_into_heap(121);
print_heap();
insert_into_heap(-500);
print_heap();
insert_into_heap(30);
print_heap();
return 0;
}
Кроме того, именование, связанное с кучей, на данном этапе не имеет значения.