C++模板,Quebug排序不与迭代器一起工作,错误C2061
我正在为使用迭代器的各种容器编写快速排序算法的模板版本,但是当我试图构造Object::iterator时,出现了以下错误 错误C2061:语法错误:标识符“迭代器” 错误C2780:“void myQuickSortContainer&”:需要1个参数-3 我相信这个错误是错误C2061的结果 如何在编译器不给我这些错误的情况下为模板化类容器创建迭代器 我的代码写在下面:C++模板,Quebug排序不与迭代器一起工作,错误C2061,c++,compiler-errors,iterator,quicksort,C++,Compiler Errors,Iterator,Quicksort,我正在为使用迭代器的各种容器编写快速排序算法的模板版本,但是当我试图构造Object::iterator时,出现了以下错误 错误C2061:语法错误:标识符“迭代器” 错误C2780:“void myQuickSortContainer&”:需要1个参数-3 我相信这个错误是错误C2061的结果 如何在编译器不给我这些错误的情况下为模板化类容器创建迭代器 我的代码写在下面: #include<iostream> #include<vector> #include<s
#include<iostream>
#include<vector>
#include<stack>
#include<list>
#include<algorithm>
template<class Itr2Printable>
void printVec(Itr2Printable begin, Itr2Printable end)
{
// couts containing Objecorder
std::cout << "[ ";
for (begin; begin != end; ++begin)
std::cout << *begin << " ";
std::cout << "]";
}
template<class Container>
void myQuickSort(Container& c, Container::iterator begin, Container::iterator end)
{
Container::iterator mid = begin + distance(begin, end) / 2;
// inclomplete
}
int main()
{
std::vector<int> vec{ 15, 75, 50, 0, 100, 5 };
std::cout << "\n\n\tquickSort(";
printVec(vec.begin(), vec.end());
std::cout << ", " << 0 << ", " << vec.size() - 1 << ")\n";
myQuickSort(vec, vec.begin(), vec.end());
}
众所周知的问题。这是一个重复的问题,但对我来说,键入答案比查找重复的问题更容易。替换
void myQuickSort(Container& c, Container::iterator begin, Container::iterator end)
与
另一方面,快速排序功能的设计不正确。如果要用迭代器来表示函数,也不要请求将容器传递给函数。您需要typename container::iterator。看,通过引用传递容器是一个愚蠢的放屁。如果所有这些都需要一个typename标识符,那么:。1为什么不干脆写下这个。样板void myQuickSortContainerItr begin,ContainerItr end2改用typename容器::迭代器有好处吗。模板void myQuickSorttypename容器::迭代器开始,typename容器::迭代器结束没有任何好处:查看std::sort的原型。
void myQuickSort(Container& c, typename Container::iterator begin, typename Container::iterator end)