C 语言

关注公众号 jb51net

关闭
首页 > 软件编程 > C 语言 > C++20 views

C++20中views的学习和使用

作者:不知名的老吴

本文主要介绍了C++20中views的学习和使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

如你所知,C++标准库从C++98发布以来在机制层面一直没有较大变动。直到C++20中range的引入,再次使得沉寂许久的C++标准库再次焕发了生机。

range 库主要作用于对具有范围的数据处理。对于确定范围的数据,在传统标准库中也有对应的处理方案。但 range 对范围的定义和传统的定义并不一致,如范围具有不要求一定有界,不要求首尾的数据类型一致等等,这是背后其实有一套复杂的规则。

而从应用的角度来看,我们应该熟悉和掌握 range 中的常用函数和数据类型,其中最常用的一类 range 便是 view,这在命名空间 std::ranges::views 中。

下面的代码实例为计算一个 vector 中的每个元素的平方。熟悉传统容器和算法库使用的朋友们很容易能够学习并使用。

#include <algorithm>
#include <iostream>
#include <ranges>
#include <vector>
​
int square(int x) {
    return x * x;
}
​
int main() {
    std::vector data = {1, 2, 3, 4, 5};
​
    // 使用传统的算法库
    {
        std::vector<int> ret;
        std::transform(data.begin(), data.end(), std::back_inserter(ret), square);
        for (auto&& x : ret) {
            std::cout << x << " ";
        }
        std::cout << std::endl;
    }
​
    // 使用 C++20 的 view
    {
        auto ret = std::ranges::views::transform(data, square);
        for (auto&& x : ret) {
            std::cout << x << " ";
        }
        std::cout << std::endl;
    }
}

对于这段代码,最直观的感受可能是使用 view 可以少写一些代码。但这些不会成为 view 引入新标准的原因。

到此这篇关于C++20中views的学习和使用的文章就介绍到这了,更多相关C++20 views内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文