C++模板化的quickSort无法使用迭代器,错误C2061
C++ templated quickSort not working with iterators, error C2061
我正在为使用迭代器的各种容器编写快速排序算法的模板版本,但当我试图构造Object::迭代器时,发现了以下错误。
-
错误C2061:语法错误:标识符"迭代器"
-
错误C2780:"void myQuickort(Container&)":需要1个参数-3(我认为这个错误是错误C2061的结果)
如何在编译器不给我这些错误的情况下为模板类Container创建迭代器。
我的代码写在下面:
#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 << "nntquickSort(";
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)
带有
void myQuickSort(Container& c, typename Container::iterator begin, typename Container::iterator end)
顺便说一下,快速排序功能的设计是不正确的。如果您用迭代器来表达函数,那么也不要请求将容器传递给函数。
相关文章:
- 使用std::multimap迭代器创建std::list
- 来自 std::list 的迭代器 .end() 按预期返回"0xcdcdcdcdcdcdcdcd"但 .begin()
- C++中带有List类的迭代器Segfault
- 如何在c++迭代器类型中包装std::chrono
- 集合上的输出迭代器:assign和increment迭代器
- Boost Spirit,获取迭代器内部语义动作
- 对于set上的循环-获取next元素迭代器
- 为什么output_editor Concept不需要output_e迭代器标记
- c++17文件系统::recursive_directory迭代器()在mac上没有给出这样的目录,但在windows上
- 使用迭代器时如何访问对象在向量中的位置?
- std::vector::迭代器是否可以合法地作为指针
- 跟随整数索引列表的自定义类迭代器
- 不明白迭代器,引用和指针失效,一个例子
- 我可以使用反向迭代器作为ForwardIt吗
- ESP8266单片机矢量迭代器的C++问题
- 如何在C++中将迭代器作为函数参数传递
- 是否应避免从非常量迭代器转换为常量迭代器?
- 如何在 c++ 中将字符串迭代器变量传递给函数?
- 为什么 vector 的随机访问迭代器给出与指针不同的内存地址?
- C++模板化的quickSort无法使用迭代器,错误C2061