Почему моя программа использует стандартное определение библиотеки конструктора Minheap вместо моей версии? - PullRequest
0 голосов
/ 16 апреля 2020

Я создаю реализацию min Heap и только что создал конструктор, который будет принимать вектор целых: векторные данные и создавать MinHeap снизу вверх. Когда я пытаюсь протестировать этот конструктор, я замечаю, что он пытается использовать версию Std. Почему это случилось? Я не могу прикрепить фотографию, поэтому я скопирую свой конструктор ниже и программу, которую я использую для проверки. Заранее спасибо. Имеется заголовочный файл с прототипом.

    minHeap::minHeap(vector<int> data){
        for(int i = data.size()-1; i >=0; i--){
            siftDown(i);
        }
    }


   int main()
   {
       vector<int> input={1,2,3,4,5,6,7,8,9,10};
       vector<int> heapTest;
       for (int i=9; i>0; i--){ 
           swap(input[i], input[rand()%i]);
       }
       minHeap h(input);
       for (int i=0; i<10; i++) heapTest.push_back(h.removeMin());
   }

MinHeap h оказывается пустым, а HeapTest заполняется случайным целым числом, которое повторяется. Это минимальная куча, созданная из вектора, который я получаю, когда запускаю его построчно в GDB.

    minHeap h(input);
    (gdb) s
    std::vector<int, std::allocator<int> >::vector (this=0x7fffffffe1b0, 
     __x=std::vector of length 10, capacity 10 = {...})
     at /usr/include/c++/8/bits/stl_vector.h:458
     458       vector(const vector& __x)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...