Well, it's part of a file that uses Heap Sort which is implemented in another file... but the part that's seg faulting in this file is way before any of the heap stuff is even created. I suppose I can post the rest of the code in this file, but I'm not sure if it'll help:
Code:
#include <iostream>
#include <vector>
#include <deque>
#include <BasicContainer.h>
#include <priority_queue.h>
using namespace std;
using namespace cop4530;
template <class C, class P>
void HeapSort(const Priority_Queue<C, P>& q, const C& c);
template <class C, class P>
void HeapSort(Priority_Queue<C, P>& q, C& c)
{
for (int i = c.size()/2; i >= 0; i--)
q.PercolateDown(i, c.size());
for (int j = c.size() - 1; j > 0; j--)
{
swap(c[0], c[j]);
q.PercolateDown(0, j);
}
}
int main()
{
//Test 1: container = vector
vector<int> intV;
intV.push_back(4);
intV.push_back(6);
intV.push_back(2);
intV.push_back(5);
intV.push_back(10);
intV.push_back(12);
intV.push_back(8);
intV.push_back(0);
intV.push_back(3);
vector<int> intVG(intV);
vector<int> intVL(intV);
int i;
cout << "Size of vector is: " << intV.size() << endl;
cout << " Unsorted vector: ";
for (i = 0; i < intV.size(); i++)
{
cout << "\nNumber " << i << ": " << intV[i] << " ";
}
cout << "\nCheck";
Priority_Queue< vector<int> > Q1 (intV);
HeapSort(Q1, intV);
cout << " Sorted vector (default): ";
for (i = 0; i < intV.size(); i++)
cout << intV[i] << " ";
cout << "\n";
Priority_Queue< vector<int>, greater<int> > Q2 (intVG);
HeapSort(Q2, intVG);
cout << " Sorted vector (increasing): ";
for (i = 0; i < intVG.size(); i++)
cout << intVG[i] << " ";
cout << "\n";
Priority_Queue< vector<int>, less<int> > Q3 (intVL);
HeapSort(Q3, intVL);
cout << " Sorted vector (decreasing): ";
for (i = 0; i < intVL.size(); i++)
cout << intVL[i] << " ";
cout << "\n\n\n";
//Test 2: container = deque
deque<char> charD;
charD.push_back('F');
charD.push_back('D');
charD.push_back('K');
charD.push_back('M');
charD.push_back('A');
charD.push_back('S');
charD.push_back('U');
charD.push_back('C');
charD.push_back('E');
deque<char> charDG(charD);
deque<char> charDL(charD);
cout << " Unsorted deque: ";
for (i = 0; i < charD.size(); i++)
cout << charD[i] << " ";
cout << "\n";
Priority_Queue< deque<char> > Q4 (charD);
HeapSort(Q4, charD);
cout << " Sorted deque (default): ";
for (i = 0; i < charD.size(); i++)
cout << charD[i] << " ";
cout << "\n";
Priority_Queue< deque<char>, greater<char> > Q5 (charDG);
HeapSort(Q5, charDG);
cout << " Sorted deque (increasing): ";
for (i = 0; i < charDG.size(); i++)
cout << charDG[i] << " ";
cout << "\n";
Priority_Queue< deque<char>, less<char> > Q6 (charDL);
HeapSort(Q6, charDL);
cout << " Sorted deque (decreasing): ";
for (i = 0; i < charDL.size(); i++)
cout << charDL[i] << " ";
cout << "\n\n\n";
//Test 3: container = BasicContainer
BasicContainer<float> floatBC;
floatBC.push_back(4.5);
floatBC.push_back(6.2);
floatBC.push_back(2.1);
floatBC.push_back(5.6);
floatBC.push_back(10.3);
floatBC.push_back(12.4);
floatBC.push_back(8.3);
floatBC.push_back(0.5);
floatBC.push_back(3.4);
BasicContainer<float> floatBCG(floatBC);
BasicContainer<float> floatBCL(floatBC);
cout << " Unsorted BasicContainer: ";
for (i = 0; i < floatBC.size(); i++)
cout << floatBC[i] << "\t";
cout << "\n";
Priority_Queue< BasicContainer<float> > Q7 (floatBC);
HeapSort(Q7, floatBC);
cout << " Sorted BasicContainer (default): ";
for (i = 0; i < floatBC.size(); i++)
cout << floatBC[i] << "\t";
cout << "\n";
Priority_Queue< BasicContainer<float>, greater<float> > Q8 (floatBCG);
HeapSort(Q8, floatBCG);
cout << " Sorted BasicContainer (increasing): ";
for (i = 0; i < floatBCG.size(); i++)
cout << floatBCG[i] << "\t";
cout << "\n";
Priority_Queue< BasicContainer<float>, less<float> > Q9 (floatBCL);
HeapSort(Q9, floatBCL);
cout << " Sorted BasicContainer (decreasing): ";
for (i = 0; i < floatBCL.size(); i++)
cout << floatBCL[i] << "\t";
cout << "\n";
cout <<"\n\n";
return 0;
}
I'm compiling it plain and simple, like this:
g++ -I. fpq.cpp
(fpq.cpp is the name of this file, of course)