当前位置: 首页 > wzjs >正文

平面设计实例网站网站做招聘需要什么资质

平面设计实例网站,网站做招聘需要什么资质,一起做网店官方网站,wordpress 页面开发教程1、概念 std::string_view是领域特定设计(字符串)。C17引入,仅用于处理以空字符(\0)结尾的字符序列;仅支持字符类型(如 char、wchar_t、std::string),用于高效访问字符串…

1、概念

  • std::string_view是领域特定设计(字符串)。C++17引入,仅用于处理以空字符(\0)结尾的字符序列;仅支持字符类型(如 charwchar_t、std::string),用于高效访问字符串数据,不复制数据、只读。
  • std::span<char>通用抽象(连续内存),强调类型安全和泛用性。C++20引入,是通用连续内存序列的视图。span支持任意类型(如 int、自定义类型),可引用数组、容器或原始内存块,支持读写操作(若模板参数非 const
// string_view示例:只读访问字符串
std::string s = "hello";
std::string_view sv(s);  // 直接引用,无需复制// span示例:读写访问字符数组
char buffer[10];
std::span<char> sp(buffer);
sp[0] = 'A';  // 可修改数据

​2、string_view

  • string_view 仅限字符类型,隐式假设数据为字符串(如自动处理空终止符)
  • string_view 提供字符串专用方法,如 substr(截取子串)、find(查找字符 / 子串)、starts_with(判断是否以某子串开头)等,完全围绕字符串语义设计,适合字符串处理
  • string_view 存储指针和字符数,可能包含空终止符标记
  • string_view 可能因隐式空终止符导致边界检查开销
  • string_view 因隐式绑定字符类型,可能因误用非字符串数据(如二进制数据)导致未定义行为
// string_view的字符串操作
std::string_view sv = "hello world";
auto pos = sv.find("world");  // 字符串查找// span的泛型操作
std::vector<int> vec = {1, 2, 3};
std::span<int> sp(vec);
std::sort(sp.begin(), sp.end());  // 支持泛型算法

​3、span

  • span 无类型限制,需显式指定数据类型,支持泛型编程(如处理二进制缓冲区)
  • span 提供通用序列操作(随机访问、迭代器遍历),还有 size()(获取元素个数)、data()(获取数据指针)、first(n)/last(n)(取前 / 后 n 个元素),无字符串语义
  • span 存储指针和元素数量(如 char 数组的元素数等于字节数),类型系统保证安全
  • span 完全依赖显式长度,无额外检查,适合高性能场景(如二进制流处理)
  • span 强制显式类型声明,避免隐式转换错误(如误将 int 数组视为 char 数组)
int numbers[] = {1, 2, 3};
std::span<char> sp(numbers);  // 编译错误!类型不匹配
std::span<int> sp(numbers);    // 正确
  • span 支持动态长度(span<T>)和静态长度(span<T, N>),静态长度在编译时可优化边界检查
int arr[5] = {1, 2, 3, 4, 5};
std::span<int, 5> fixedSpan(arr);  // 编译时已知长度

 span 提供 subspan()first()last() 等方法,支持灵活截取子视图

int arr[] = {1, 2, 3, 4, 5};
std::span<int> sp(arr);
auto sub = sp.subspan(1, 3);  // 截取第1到第3个元素
// string_view潜在风险:未正确处理非空终止数据
char data[] = {'a', 'b', 'c'};  // 无空终止符
std::string_view sv(data, 3);    // 需显式指定长度// span的类型安全:避免隐式转换
int numbers[] = {1, 2, 3};
std::span<int> sp(numbers);  // 明确类型,无歧义

4、string_view的生命周期风险

4.1  string_view的生命周期风险

string_view 不管理底层数据的生命周期,若原始字符串被释放,string_view 会成为悬空引用,导致未定义行为

std::string_view createView() {std::string tmp = "only_in_this_func";return tmp;  // tmp 被销毁后,返回的 string_view 无效!
}

4.2  string_view 对非空终止符的隐式处理

string_view 从 const char* 构造时,默认假设字符串以 \0 结尾,但若数据未包含 \0,可能导致越界访问

char data[] = {'a', 'b', 'c'};  // 无空终止符
std::string_view sv(data);       // 错误!隐式假设以 \0 结尾// 需显式指定长度(如std::string_view(data, size)),否则易因空终止符误判边界。

5、补充

在C++核心指南(C++ Core Guidelines)中,为何推荐优先使用string_viewspan而非原始指针? 

  • 安全性:两者封装了指针和长度,避免越界访问(如 span 的 size() 检查)
  • 语义明确string_view 表示字符串只读视图,span 表示连续内存,代码意图更清晰
  • 兼容性:支持多种数据源(如数组、容器、内存池),减少代码重复
// 推荐用法:使用string_view替代const char*
void read_data(std::string_view data);  // 推荐用法:使用span替代指针+长度
void process_buffer(std::span<char> buffer);

 

http://www.dtcms.com/wzjs/805978.html

相关文章:

  • 网站要有可留言功能 怎么做福州建站网络公司
  • 建网站建设的基本流程电商平台谈双11变冷
  • win7系统做网站服务器系统在吗做网站商城
  • 深圳外贸网站优化什么是企业网站策划案
  • 网站标题用什么符号分开珠海网站建设及优化
  • 上海网站关键词排名优化报价东莞全网合一网站
  • 网络公司 网站建设 小程序中国建设银银行招聘网站
  • 做网站去哪个公司好甘肃住房和城乡建设厅网站首页
  • 北京网站开发浩森宇特有什么网站做任务给钱的
  • 柞水县城乡建设局网站wordpress 页面转跳
  • 有经验的企业做网站wordpress实时交流插件
  • 文化馆网站建设磁力搜索器在线
  • 网站建设电话销售录音深圳网站营销推广公司电话
  • wordpress中文站cn电子工程网 ofweek
  • 做任务 网站深圳知名设计公司
  • 企业为什么做网站推广网站问题有哪些内容
  • 东莞网站建设东莞crm软件系统 运用
  • 有没有好的网站可以学做头发网址类网站怎么做
  • 建设网站需要提交什么资料企业网站营销的典型案例
  • 上行30m可以做网站吗企业公司网站建设公司
  • 手机怎么建设视频网站设计公司的logo
  • 简述如何让网站排名快速提升一站式营销型网站建设
  • 三航奔腾建设有限公司官方网站wordpress中文cms主题模板下载
  • 零基础学做网站浏览器怎么设置不拦截任何网站
  • 龙岩做网站龙岩网页设计网站建设六道
  • 长沙专业建网站施工企业是什么
  • 建站教程的优点wordpress放入视频链接
  • 网站做好了每年都要续费吗成都高薪seo
  • 上海网站建设报价单子现说企业门户网站制作周期
  • 建设网站怎么创建数据库湖南常德论坛