C++(20):range

这篇具有很好参考价值的文章主要介绍了C++(20):range。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

C++20提供了range来简化对迭代器的使用,可以认为range是一个封装了begin和end的对象。

template< class T >

concept range = requires( T& t ) {
  ranges::begin(t); // equality-preserving for forward iterators
  ranges::end  (t);

};

而对于end,range将它认为是迭代器哨位,并不要求end一定是一个跟begin相同类型的迭代器,只要可以通过end哨位进行比较就可以:文章来源地址https://www.toymoban.com/news/detail-542103.html

#include <algorithm>
#include <iostream>
using namespace std;

struct SpaceIsEnd {
    bool operator==(auto pos) const {
        return *pos == ' ';
    }
};

class CommasIsEnd {
public:
    bool operator==(auto pos) const {
        return *pos == ',';
    }
};

int main() 
{
    const char *str = 

到了这里,关于C++(20):range的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C++ 20 Module

    头文件包含一直是C/C++的传统,它使代码声明与实现分离,但它有一个非常大的问题就是会被重复编译,拖累编译速度。 通常一个标准头文件 iostream 展开后可能达几十万甚至上百万行。笔者使用下面的示例进行测试,新建一个 main.cc ,内容如下: 然后分别使用g++和clang++来测

    2024年01月23日
    浏览(34)
  • C++(20):using enum

    C++(11):枚举类_c++11 枚举类_风静如云的博客-CSDN博客  虽然枚举类有很多有点,不过如果每次使用都需要带上枚举类的类名,那么使用起来还是稍有些不便,C++20对此进行优化,可以通过using enum在一定的作用域内开放枚举类成员的使用: 可以看到当使用using enum声明了枚举类后

    2023年04月12日
    浏览(70)
  • C++语法(20)---- 模拟红黑树

    C++语法(19)---- 模拟AVL树_哈里沃克的博客-CSDN博客 https://blog.csdn.net/m0_63488627/article/details/130229501?spm=1001.2014.3001.5501 目录 1.红黑树介绍 2.模拟实现 1.枚举红黑颜色 2.节点的定义 3.树类框架 4.插入 5.检查 3.代码实现 最长路径不超过最短路径的两倍,近似平衡 最短:全黑 最长:

    2024年02月01日
    浏览(36)
  • C++设计模式20:状态模式

    C++ 23种设计模式系列文章目录 创建型模式 第1式 工厂方法模式 第2式 抽象工厂模式 第3式 单例模式 第4式 建造者模式 第5式 原型模式 结构型模式 第6式 适配器模式 第7式 桥接模式 第8式 组合模式

    2024年02月02日
    浏览(34)
  • C++ 笔记 20 (STL函数对象)

    1. 函数对象 1.1 函数对象概念 概念: 重载 函数调用操作符 的类,其对象常称为函数对象; 函数对象使用重载的()时,行为类似函数调用,也叫仿函数。 本质: 函数对象(仿函数)是一个类,不是一个函数。 1.2 函数对象的使用 特点: 函数对象在使用时,可以像普通函数

    2024年02月02日
    浏览(43)
  • C++(20):多重继承与虚继承

    多重继承 是指从多个直接基类中产生派生类的能力。多重继承的派生类继承了所有父类的属性。 在派生类的派生列表中可以包含多个基类: 每个基类包含一个可选的访问说明符。如果说明符被忽略掉了,则 class 对应的默认访问说明符是 private , struct 对应的是

    2024年02月10日
    浏览(36)
  • setup c++ 20 in vscode

    first, update your g++ compiler to above g++11 in tasks.json file(automatically created while you create the project) in settings.json file(automatically created while you click on c/c++: edit configurations(json) [ctrl + shift + p to call, require the c/c++ extension first] ) you can change your compiler here in c_cpp_properties.json

    2024年02月12日
    浏览(19)
  • C++(20):explicit(true/false)

    explicit通常用于声明是否运行隐式转换: C++20扩展了explicit,可以通过explicit(false)来禁用,或通过explicit(true)来启用explicit

    2024年02月06日
    浏览(39)
  • effective c++ 20 传引用代替传值

    本节,作者开始讨论引用。我们知道c语言已经有了指针,通过指针我们也就可以修改变量本身,而不是修改变量的副本(传值), 那么在c++中又搞出来个引用, 那么其是不是有点重复? 我们知道在函数的传参中,如果传递的是指针, 那么就不可避免的要进行取地址和解引

    2024年02月05日
    浏览(44)
  • 第十二站(20天):C++泛型编程

    C++提供了模板(template)编程的概念。所谓模板,实际上是建立一个通用函数或类, 其 类内部的类型和函数的形参类型不具体指定 ,用一个虚拟的类型来代表。这种通用的方式称 为模板。 模板是泛型编程的基础, 泛型编程即以一种独立于任何特定类型的方式编写代码 如: vect

    2024年01月22日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包