C++ string_view

leetcode某题,使用string_view和string的时间复杂度和空间复杂度差很多,便查阅了资料

std::string_view类

它是std::basic_string_view类模板的实例化,在<string_view>头文件中定义。是const string&的简易替代品。不会额外复制字符串,所以不会额外产生内存开销,它支持和string类似的接口,但是缺少c_str()。并且添加了remove_prefix(size_t)和remove_suffix(size_t)方法。前者将起始指针 前移一定偏移量来收缩字符串,后者则将结尾指针倒退一定的偏移量来收缩。

注意:无法连接一个string和string_view,无法编译(解决方法:使用string_view.data()这一方法)

当形参是string_view时,你就可以传入string、 char*、字符串字面量(常量).

而如果以const string&为参数,则不能传入字符串字面量常量和 char*。只能用string。
 

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)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值