1. std::reverse
和 ranges::reverse
的区别
std::reverse
-
定义:定义在
<algorithm>
头文件中。 -
参数:接受两个迭代器(
begin
和end
),表示要反转的范围。 -
用法:
std::reverse(iterator begin, iterator end);
-
示例:
-
std::vector<int> vec = {1, 2, 3, 4, 5}; std::reverse(vec.begin(), vec.end()); // 反转整个 vector
ranges::reverse
-
定义:定义在
<ranges>
头文件中,是C++20引入的Ranges库的一部分。 -
参数:接受一个范围(range),可以直接传递容器或视图。
-
用法:
ranges::reverse(range);
-
示例:
#include <ranges> std::vector<int> vec = {1, 2, 3, 4, 5}; ranges::reverse(vec); // 直接反转整个 vector
主要区别
特性 | std::reverse | ranges::reverse |
---|---|---|
参数类型 | 需要传递两个迭代器 | 直接传递一个范围(range) |
代码简洁性 | 需要显式指定范围 | 更简洁,直接操作容器 |
C++版本支持 | C++98 起支持 | C++20 起支持 |
适用范围 | 适用于所有支持迭代器的容器 | 适用于支持范围操作的容器和视图 |
2. std::sort
和 ranges::sort
的区别
std::sort
-
定义:定义在
<algorithm>
头文件中。 -
参数:接受两个迭代器(
begin
和end
),表示要排序的范围,还可以传递一个比较函数。 -
用法:
std::sort(iterator begin, iterator end, Compare comp);
-
示例:
std::vector<int> vec = {5, 3, 1, 4, 2}; std::sort(vec.begin(), vec.end()); // 默认升序排序
ranges::sort
-
定义:定义在
<ranges>
头文件中,是C++20引入的Ranges库的一部分。 -
参数:接受一个范围(range),可以直接传递容器或视图,还可以传递一个比较函数。
-
用法:
ranges::sort(range, Compare comp);
-
示例:
#include <ranges> std::vector<int> vec = {5, 3, 1, 4, 2}; ranges::sort(vec); // 直接排序整个 vector
主要区别
特性 | std::sort | ranges::sort |
---|---|---|
参数类型 | 需要传递两个迭代器 | 直接传递一个范围(range) |
代码简洁性 | 需要显式指定范围 | 更简洁,直接操作容器 |
C++版本支持 | C++98 起支持 | C++20 起支持 |
适用范围 | 适用于所有支持迭代器的容器 | 适用于支持范围操作的容器和视图 |