c++ - 范围算法和标准算法之间的区别

标签 c++ c++20

许多标准库算法在C++ 20中具有两个版本:一个在std命名空间中,另一个在std::ranges命名空间中具有相同名称。例如, std::ranges::count std::count 都用于计算满足谓词的元素数。
为什么这些算法有两个版本?

最佳答案

范围功能将C++ 20概念添加到迭代器和范围中,并将其算法等的定义限制在这些概念上。但是,C++ 20概念与C++ 17命名要求有不同的要求。通常,满足C++ 17要求的类型将满足C++ 20概念等效项but not in all cases。尽管通常很容易更新代码以使其对C++ 20概念有效,但仍会破坏用户代码的向后兼容性,以便仅停止在C++ 20中进行编译。
因此,他们没有将约束算法强加给用户,而是创建了新算法,您可以选择使用这些新算法。因此,没有代码破损。

关于c++ - 范围算法和标准算法之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63867796/

相关文章:

c++ - ShowWindow 无效的窗口句柄

c++ - 使用 clang 将 std lib 作为模块导入

c++ - 如何以线程安全的方式避免静态数据成员初始化失败?

C++:对一个空输入使用react与空输入文件

c++ - C++ 标准是否允许非模板类的模板构造函数?

c++ - 当我移动轨迹栏时,如何防止控件(选项卡)在 Windows 通用控件 6.0 中闪烁和消失?

C++20 bit_cast 与 reinterpret_cast

C++ 协程 : call a coroutine function without co_await

c++ - 为什么std::visit in a unsatisfied concept会导致gcc编译错误

c++ - "With a stackless coroutine, only the top-level routine may be suspended."是什么意思