c++ - C++中的排序如何工作?

标签 c++ sorting

我是一名 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/

相关文章:

C++定律? (类似于三巨头法则)

c++ - 递归最终数

c - 使用 strcpy 进行冒泡排序

python - 根据不同的数组对随机生成的 Numpy 数组进行排序

excel - 在 Excel VBA 中对向量进行排序

php - 如何替换php数组中的项目顺序?

C++ 为什么这种构造甚至有效?

c++ - 无法将 'int (*)[size]' 转换为 'int**'

c++ - next_permutation() 的并行代码

jquery - 用于使用拖放对列表进行排序或排序的触摸界面