C++模板,Quebug排序不与迭代器一起工作,错误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

我正在为使用迭代器的各种容器编写快速排序算法的模板版本,但是当我试图构造Object::iterator时,出现了以下错误

错误C2061:语法错误:标识符“迭代器”

错误C2780:“void myQuickSortContainer&”:需要1个参数-3 我相信这个错误是错误C2061的结果

如何在编译器不给我这些错误的情况下为模板化类容器创建迭代器

我的代码写在下面:

#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)