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);
试图理解 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);