首页 > 其他分享 >std::string_view

std::string_view

时间:2023-10-30 19:45:24浏览次数:22  
标签:std string 视图 复制 view 指针

在原来的string操作中,大多数都是复制string进行操作,如:substr()、string&传参。它们都会复制占用额外内存。

使用std::string_view犹如只是对它的视图映射进行处理,有一个指针指向一个起始位置,然后会有一个size参数去决定这个指针的移动步数。

#if 1
PrintName(std::string_view string){
    std::cout<<string<<std::endl;
}
#else
PrintName(std::string& string){
    std::cout<<string<<std::endl;
}
string Name="WKxin";
#if 1
std::string_view firstName(Name.c_str+1,5);
#else
std::string firstName=Name.substr(1,5);

 

标签:std,string,视图,复制,view,指针
From: https://www.cnblogs.com/wangkaixin-yy/p/17798623.html

相关文章

  • 无涯教程-C语言 - 字符串(String)
    字符串实际上是由null字符'\0'终止的一维字符数组,因此,以零结尾的字符串包含由字符串组成的字符,后跟null。以下声明和初始化创建一个由单词"Hello"组成的字符串。chargreeting[6]={'H','e','l','l','o','\0'};如果您遵循数组初始化的规则,那么您可以编写以下语句,如下......
  • C++23:多维视图(std::mdspan)
    C++23:多维视图(std::mdspan)介绍在C++23中,std::mdspan是一个非拥有的多维视图,用于表示连续对象序列。这个连续对象序列可以是一个简单的C数组、带有大小的指针、std::array、std::vector或std::string。这种多维视图通常被称为多维数组。多维数组的形状由其维数(也称为秩)和每个......
  • Android的webview区分录相还是拍照
    背景:集成了一个实名认证的网页,iOS正常但Android点击没有反应,首页想着是webview的某些协议没有实现,于是在网上找到了相关资料,我们简单记录一下核心代码。1.权限配置<uses-permissionandroid:name="android.permission.CAMERA"/><uses-permissionandroid:name="android.permi......
  • CF1889A. Qingshan Loves Strings 2
    不妨考虑什么时候会无解!显然当原序列\(0,1\)数量不同,或者序列总长为奇数时会无解!否则我们设\(l=1,r=n\)!开始回文配对!如果配上了就直接删掉!并把左右端点向内移动!如果两者都是\(0\),就在末尾加上\(01\)!都是\(1\)就加最前面!以在末尾加入举例!此时如果开头是\(01\)就会多......
  • ADASTRNG - Ada and Substring 题解
    ADASTRNG-AdaandSubstring题解题目描述给定一个小写字符串。输出\(26\)个数,代表以\(\texttt{a}\sim\texttt{z}\)开头的本质不同的子串个数。题目分析高度数组模板题。可以想到将以每个字符开头的本质不同的子串数目转化为:以每个字符开头的所有字串数目减去以每......
  • synchronized使用String做锁定互斥
    依靠ConcurrentHashMap特性,自己实现一个工厂类:importlombok.Data;importlombok.extern.slf4j.Slf4j;importorg.springframework.util.StringUtils;importjava.util.concurrent.ConcurrentHashMap;importjava.util.concurrent.ConcurrentMap;@Slf4jpublicclassMute......
  • PAT甲级:1174 Left-View of Binary Tree
     题目:1174Left-ViewofBinaryTree25分 题解:层次遍历输出每一行最左边的元素。(最开始以为输出部分节点的左子树...想不到思路)usingnamespacestd;#include<iostream>#include<vector>#include<map>#include<algorithm>#include<queue>#include<cmath>......
  • SQL Server 存储过程的应用及 LabVIEW 调用
    存储过程应用及LabVIEW调用1、存储过程就是一条或多条SQL语句的集合,可以称之为批处理文件; 2、部分优点:a、加快运行速度;b、可封装复杂操作;c、实现模块化程序设计,统一数据库访问接口,提高可维护性;d、增加代码安全性; 3、部分缺点:a、不同数据库语法......
  • 024-第三代软件开发-TabView
    第三代软件开发-TabView文章目录第三代软件开发-TabView项目介绍TabView官方示例项目实际使用关键字:Qt、Qml、TabView、关键字4、关键字5项目介绍欢迎来到我们的QML&C++项目!这个项目结合了QML(QtMeta-ObjectLanguage)和C++的强大功能,旨在开发出色的用户界面和高性能......
  • std::map和std::unordered_map
    区别std::map和std::unordered_map是C++标准库中的两个容器,用于实现键值对的关联。它们之间的主要区别在于底层实现和性能特征。底层实现:std::map是基于红黑树(一种平衡二叉搜索树)实现的有序映射容器,而std::unordered_map是基于哈希表实现的无序映射容器。排序:std::map中的......