许多标准库算法在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/