如何在C++中将迭代器作为函数参数传递
How to Pass Iterator as Function Parameter in C++
我正在编写自己的C++向量类,我希望能够将迭代器作为函数参数传递给我的 reverse(( 函数,以便我可以做类似的事情
vector<int> scores{5,8,89,32};
reverse(scores.begin(), scores.end());
而不是
...
scores.reverse();
or
reverse(scores)
我可以用这段代码做后面的事情
template<typename T>
void reverse(vector<T> &orig) {
//Reverse the elements of the array
auto begin = orig.begin();
auto end = --orig.end(); //Move the iterator 1 place back to keep within range
while (begin < end) {
std::swap(*begin, *end);
begin++;
end--;
}
}
但是当我这样做时
template<typename T>
void reverse(vector<T>::iterator begin, vector<T>::iterator end) {
while (begin < end) {
std::swap(*begin, *end);
begin++;
end--;
}
}
我收到此错误
error: expected ')' before 'begin'
请问我做错了什么?
谢谢。
它应该是:
template <typename T>
void reverse(typename std::vector<T>::iterator begin, typename std::vector<T>::iterator end)
{...}
如果没有typename
编译器就无法确定iterator
是成员还是类型。因此,编译器假定它是一个成员。
相关文章:
- 如何在C++中将迭代器作为函数参数传递
- 为什么我不能将引用作为 std::async 的函数参数传递
- 节点插件 API 将数组作为函数参数传递
- 将字符串数组作为函数参数传递
- 如何通过 C++ 中的函数参数传递初始值设定项列表的固定大小的初始值设定项列表?
- 我可以动态创建新地图并作为函数参数传递吗?
- 将任意模板向量作为函数参数C++传递
- 将函数指针作为函数参数传递的目的
- C++:通过函数参数传递的值给出不同的结果
- 当数组大小在C++中未知时,如何在运行时将对字符串数组的引用作为函数参数传递?
- 通过宏将函数参数传递给函数
- C++:访问作为函数参数传递的双指针数组所指向的变量的值
- 如何将 std::string 作为构造函数参数传递,并将其保存的 C 字符串存储在 void 指针中?
- 将派生类构造函数参数传递给受保护的成员
- 将指向数组的指针作为函数参数传递,这本身就是另一个函数的返回值?
- 如何将二维数组类型字符(字符串)作为函数参数传递?
- 有什么理由C++ 11+ std::mutex 应该声明为全局变量,而不是作为函数参数传递到 std::thread 中
- 如何将派生类作为函数参数传递:如果派生类成员不在父类中怎么办
- 如何将变量作为构造函数参数或函数参数传递
- 当数组对象以函数参数传递时,为什么复制构造函数会自称