I'm using vectors and merge sort to find the minimum and maximum and the program keeps throwing errors.
void mergeSort(vector<int>& numList, vector<int> & minMax, int left, int right){
int mid;
if(left < right){
mid = (left + right) / 2;
mergeSort(numList, minMax, left, mid);
mergeSort(numList, minMax, mid + 1, right);
merge(numList, minMax, left, mid, right);
}
}
void merge(vector<int>& listNum, vector<int> & minMax, int start, int mid, int end){
int leftPos = start;
int rightPos = mid + 1;
int tempPos = start;
int* tempArr = new int[listNum.size()];
while(leftPos <= mid && rightPos <= end){
if(listNum[leftPos] < listNum[rightPos])
tempArr[tempPos++] = listNum[leftPos++];
else
tempArr[tempPos++] = listNum[rightPos++];
}
while(leftPos <= mid)
tempArr[tempPos++] = listNum[leftPos++];
while(rightPos <= mid)
tempArr[tempPos++] = listNum[rightPos++];
minMax.push_back(tempArr[0]); //store min
minMax.push_back(tempArr[end]); //store max
delete[] tempArr;
}
int main() {
vector<int> listOfNums;
vector<int> minAndMax;
int listOfNumsSize, minAndMaxSize;
cout<<"Enter a list of unsorted numbers separated by space (end by typing -1): "<<endl;
listOfNums = readNum ();
listOfNumsSize = listOfNums.size();
mergeSort(listOfNums, minAndMax, 0, listOfNumsSize - 1);
minAndMaxSize = minAndMax.size();
printNum (minAndMax, minAndMaxSize);
return 0;
}
The following are some of the errors I keep getting.
no type named 'value_type' in 'std::__1::iterator_traits<std::__1::vector<int, std::__1::allocator<int> > >'
typedef typename iterator_traits<_InputIterator1>::value_type __v1;
in instantiation of function template specialization 'std::__1::merge<std::__1::vector<int, std::__1::allocator<int> >, int, int>' requested here
merge(numList, minMax, left, mid, right);