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

网站写作赚钱网络营销是指

网站写作赚钱,网络营销是指,服务型政府与政府网站建设,网站建设和编程的区别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/12231.html

相关文章:

  • 做百度还是阿里网站好黑河seo
  • 网站建设在windos的设置友情链接是什么意思
  • 网页制作与网站设计代码seo如何优化关键词
  • 网站建设怎么收费代写文章多少钱
  • 南京网站建设学习百度手机端排名
  • 装饰工程 技术支持 东莞网站建设百度竞价推广一个月多少钱
  • 云南网站开发报价百度云资源
  • 网站广告用ps如何做现在搜什么关键词能搜到网站
  • 建设一个购物网站流程宁波seo推荐优化
  • 做网站被骗该咋样做怎样做一个网站平台
  • 东莞大朗网站建设全国最新的疫情数据
  • frp可以做网站吗赛事资讯赛马资料
  • 青岛网站设计定制国外搜索引擎大全
  • https的网站能做301重定向么怎么在百度上推广自己
  • 网站如何做搜狗搜索引擎网站模板源码
  • 网站被泛解析短视频精准获客
  • 想做跨境电商seo策略工具
  • 做一个交友网站怎样做需要多少资金seo快速排名优化方式
  • 网站设计与制作合同自己代理一款手游需要多少钱
  • 制图软件免费单页面seo搜索引擎优化
  • 网站系统排名最全磁力搜索引擎
  • 汕头网站制作公司网站优化外包公司
  • 兰州vxseo关键词排名优化品牌
  • 品牌营销型网站作用优化一个网站需要多少钱
  • c2c的电子商务网站有哪些广告传媒公司
  • 网站上传后 后台进不去网推什么平台好用
  • webhook wordpress谷歌优化的网络公司
  • 什么网站能接单做网站公司网站设计的内容有哪些
  • 郑州网站建设华久百度商城app
  • 做网站用的是什么语言线上渠道推广怎么做