C++ 中的迭代器。如何修改知道其迭代器的向量?

Iterators in C++. How to modify a vector knowing its iterators?

试图理解 C++ 中的迭代器。例如,在下面的代码中我们打印一个向量。

using Iterator = vector<int>::iterator;

void PrintRange(Iterator range_begin, Iterator range_end) {
    for (auto it = range_begin; it != range_end; ++it) {
        cout << *it << " ";
    }
}

int main() {
    vector<int> numbers = {5, 3, 2, 1};
    PrintRange(begin(numbers), end(numbers));
    return 0;
}
// 5 3 2 1 

我的问题是如何正确编写函数 ,它只需要两个迭代器并修改向量 。例如,函数 my_sort 对向量进行排序,如果我们写

my_sort(begin(numbers), end(numbers));

number 包含修改后的排序向量。

void my_sort(Iterator range_begin, Iterator range_end) {
    // how to modify a vector knowing its iterators ?
}

How to modify a vector knowing its iterators?

您可以通过输入迭代器间接访问它指向的元素。示例:

auto it = std::begin(numbers);
*it = 42;

For example, the function my_sort sorts a vector

排序函数通常会交换元素。您可以像这样交换迭代器指向的元素:

std::iter_swap(it1, it2);