我是一名 Java 开发人员。我目前正在学习C++。我一直在查看用于排序的代码示例。在 Java 中,通常会给出一种排序方法,它需要排序的容器,例如
sort(Object[] someArray)
我注意到在 C++ 中你传递了两个参数,容器的开始和结束。我的问题是,实际容器是如何访问的?
下面是从维基百科获取的示例代码,说明了排序方法
#include <iostream>
#include <algorithm>
#include <vector>
int main() {
std::vector<int> vec;
vec.push_back(10); vec.push_back(5); vec.push_back(100);
std::sort(vec.begin(), vec.end());
for (int i = 0; i < vec.size(); ++i)
std::cout << vec[i] << ' ';
}
最佳答案
vec.begin()
和 vec.end()
返回迭代器迭代器。迭代器是元素上的一种指针,您可以使用迭代器读取和修改它们。这就是 sort 使用迭代器所做的事情。
如果是迭代器,可以直接修改迭代器所引用的对象:
*it = X;
排序函数不必知道容器,这是迭代器的强大之处。通过操纵指针,它可以对整个容器进行排序,甚至不知道它到底是什么容器。
你应该了解迭代器 ( http://www.cprogramming.com/tutorial/stl/iterators.html )
关于c++ - C++中的排序如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14716855/