I'm writing my own C++ vector class and I want to be able to pass an iterator as a function parameter to my reverse() function, so that I can do something like
vector<int> scores{5,8,89,32};
reverse(scores.begin(), scores.end());
instead of
...
scores.reverse();
or
reverse(scores)
I'm able to do the later with this code
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--;
}
}
But when I do this
template<typename T>
void reverse(vector<T>::iterator begin, vector<T>::iterator end) {
while (begin < end) {
std::swap(*begin, *end);
begin++;
end--;
}
}
I get this error
error: expected ')' before 'begin'
What am I doing wrong, please?
Thank you.