专栏首页glm的全栈学习之路C++17特性 string_view substr只要常数复杂度,且省内存

C++17特性 string_view substr只要常数复杂度,且省内存

string_view

string_view 是C++17所提供的用于处理只读字符串的轻量对象。这里后缀 view 的意思是只读的视图。

  • 通过调用 string_view 构造器可将字符串转换为 string_view 对象。 string 可隐式转换为 string_view。
  • string_view 是只读的轻量对象,它对所指向的字符串没有所有权。
  • string_view通常用于函数参数类型,可用来取代 const char* 和 const string&。 string_view 代替 const string&,可以避免不必要的内存分配。
  • string_view的成员函数即对外接口与 string 相类似,但只包含读取字符串内容的部分。 string_view::substr()的返回值类型是string_view,不产生新的字符串,不会进行内存分配。 string::substr()的返回值类型是string,产生新的字符串,会进行内存分配。
  • string_view字面量的后缀是 sv。(string字面量的后缀是 s)

头文件

#include<string_view>
//声明
string p="xxx";
string_view test test(p);

//或
string_view p("xxx");
string_view p("xxx",2)//取前两个字符
string_view p="xxx"sv;

//string 类有的api string_view都有

string_view的substr方法是o(k),k为常数
本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!
本文分享自作者个人站点/博客:https://newcoder-glm.blog.csdn.net复制
如有侵权,请联系 cloudcommunity@tencent.com 删除。
登录 后参与评论
0 条评论

相关文章

  • [译]C++17,使用 string_view 来避免复制

    当字符串数据的所有权已经确定(譬如由某个string对象持有),并且你只想访问(而不修改)他们时,使用 std::string_view 可以避免字符串数据的复...

    用户2615200
  • C++17 在业务代码中最好用的十个特性

    作者:jinshang,腾讯 WXG 后台开发工程师 自从步入现代 C++时代开始,C++语言标准形成了三年一个版本的惯例:C++11 标志着现代 C++的开...

    腾讯技术工程官方号
  • C++17新特性之std::string_view

    std::string_view系C++17标准发布后新增的内容,类成员变量包含两个部分:字符串指针和字符串长度,相比std::string, std::str...

    音视频牛哥
  • c++17好用的新特性总结

    最近很火的鸿蒙系统框架代码,很多就是基于c++做的底层、运行时和应用框架封装。c++11后续又有11,14,17,20等众多新版本。哪个是主流?截至目前来说,c...

    杨永贞
  • c++17尝鲜:string_view

    string_view 是C++17所提供的用于处理只读字符串的轻量对象。这里后缀 view 的意思是只读的视图

    EdwardShaw
  • brpc小课堂:从StringPiece说开来

    在brpc源码的src目录下,有一级子目录名为butil。代码中的util目录一般就是存放常用的工具类或函数的地方。今天我们来聊一下butil/strings/...

    果冻虾仁
  • 前端学数据结构与算法(一):不会复杂度分析,算法等于白学

    兜兜转转了这么久,数据结构与算法始终是逃不过命题。曾几何时,前端学习数据结构与算法,想必会被认为不务正业,但现今想必大家已有耳闻与经历,面试遇到链表、树、爬楼梯...

    飞跃疯人院
  • 数据结构学习笔记(线性表)

    希希里之海
  • So easy 10分钟搞懂时间复杂度和空间复杂度!

    温馨提醒: 本文适用于所有开发者人群、无论你是小白、初学者还是已经工作的"社会人"。

    IT学习日记
  • Codeforces Round #725 (Div. 3)

    n个石子排成一排,每个石子有一个能力值,且每个石子的能力值各不相同,每次可以销毁最左边的石子或者最右边的石子,问最少几次消除能力值最大和最小的石子。

    Here_SDUT
  • 快收藏-2021最新阿里精选面试题(数据库篇)

    快到一年一度的10月份大企校招的时间了,这里给广大在校生和部分已经工作的老司机们整理一些阿里巴巴的面试题,希望给大家能在面试前做一些引导,查缺补漏。

    用户3479834
  • 算法笔记汇总精简版下载_算法与数据结构笔记

    10个数据结构:数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、Trie 树; 10个算法:递归、排序、二分查找、搜索、哈希算法、贪心算法、分治算法、回溯算...

    全栈程序员站长
  • 数据结构与算法学习笔记

    本文是王争老师的《算法与数据结构之美》的学习笔记,详细内容请看王争的专栏 。有不懂的地方指出来,我做修改。

    全栈程序员站长
  • 每秒处理10万条消息的高性能MQ,Kafka是怎么做到的?

    MQ(消息中间件)是项目开发中经常用到的一种技术。它是分布式系统重要的组件,主要用来解决应用解耦、异步任务、流量削锋等业务场景。MQ有非常多的开源实现,包括Ro...

    码农架构
  • 数据结构基础 (代码效率优化, 线性表, 栈, 队列, 数组,字符串,树和二叉树,哈希表)

    具有增删困难、查找容易的特点,可以在任意位置增删数据,所以数组的增删操作会更为多样。

    RendaZhang
  • Flink 常见问题定位指南

    流计算作业通常运行时间长,数据吞吐量大,且对时延较为敏感。但实际运行中,Flink 作业可能因为各种原因出现吞吐量抖动、延迟高、快照失败等突发情况,甚至发生崩溃...

    腾讯云大数据
  • Flink 常见问题定位指南

    流计算作业通常运行时间长,数据吞吐量大,且对时延较为敏感。但实际运行中,Flink 作业可能因为各种原因出现吞吐量抖动、延迟高、快照失败等突发情况,甚至发生崩溃...

    KyleMeow

扫码关注腾讯云开发者

领取腾讯云代金券