解析c++ range实现(一),初步介绍

2021/01/23 c++ range

Range 的初步介绍

  RangeC++20的重要组成部分之一,其提供了一系列有关容器(主要是序列)的抽象的便利的操作。鉴于我想要在我的游戏引擎中也实现一个这样的功能,我决定开始研究一下Range的源代码,目前我所阅读的源代码来自Range-v3

Range 的主要功能

View

  View是一种轻量级的表示序列的包装器,它可以很快地被复制或是创建,且其自身没有其所含元素的所有权。

  Range库利用View来提供了一系列的可随意组合的,纯函数式的,lazy 的对序列的操作。

Action

  ActionView的弱化版本,你可以利用一系列的Action相互组合,直接地在一个序列实体上进行操作。

Range 源码目录分析

  项目的源码主要放在include文件夹下。其内含:

  • concepts (提供对于非 cpp20 的 concept 支持,一些要用的宏定义以及 range 所需的基础 concept 定义和 traits)
  • meta (一套模板元编程的库)
  • range (主要功能的实现)
  • std (和标准库相关的,起着一些兼容作用的工具)

  在这些目录中,std 和 concepts 没有什么东西好说的,如果用到其中的内容再看就行,而对于这个Range库来说,元编程的部分是整个库的基石,所以我准备先从 meta 文件夹内的内容开始,逐步深入地分析解读整个Range库。

Show Disqus Comments

Search

    welcome to visit my github

    creatorlxd's github

    Table of Contents