如何修复错误:使用向量查找最小值和最大值进行合并排序
How do I fix errors: merge sort using vector finding minimum and maximum
我使用向量和合并排序来找到最小值和最大值,程序不断抛出错误。
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;
}
以下是我经常犯的一些错误。
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);
问题是merge()
在源文件中定义在mergeSort()
之下。因此,当编译mergeSort()
时,编译器会找到std::merge()
,然后无法匹配参数。
因此,将merge()
移动到mergeSort()
之上或向前声明。
这就是using namespace std
坏的原因。
相关文章:
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- 使用指针从C++中的数组中获取最大值
- 如何将这个C++哈希表转换为动态扩展和收缩,而不是使用硬设置的最大值
- 如何创建一个函数来计算并返回平均值、最大值和最小值
- 在二维数组中查找最小值和最大值?
- 整数溢出,最大值为 pow(10,19)
- 以C++递归方式查找向量中的最大值
- C++ - 如何在结构向量中找到结构体一个成员的最大值?
- 查找数组中第一个最小值和最后一个最大值元素之间的算术平均值
- C++ 函数,用于查找传入的 N 个数字的平均值、总和、最小值和最大值
- 我的 If Else 语句无法在向量 (C++) 中提供最大值
- 如何使用可变参数模板类使用模板元编程获得最大值
- C++不同的最小最大值实现
- 如何修复错误:使用向量查找最小值和最大值进行合并排序
- 计数排序(从最大值到最小值)
- 选择从两端以最小值和最大值排序
- 试图从最小值到最大值对C++的3个值进行排序
- 如何查找排序列表的最小值、最大值、总和和平均值
- 如何在C++中用键的最大值对映射进行排序
- 对STL Map从最小值到最大值排序