C++20中的std::span怎么使用
导读:本文共1265.5字符,通常情况下阅读需要4分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要: span就是一个连续对象存储的观察者。类似std::string_view是string的观察者。连续的存储,不一定是数组。例如:zero(char(&arr)[10]);//10个元素的数组,sizeof(arr)==10*sizeof(char)==10zero(chararr[]);//arr退化为指针,sizeof(arr)==sizeof(c... ...
音频解说
目录
(为您整理了一些要点),点击可以直达。span就是一个连续对象存储的观察者。类似std::string_view是string的观察者。
连续的存储,不一定是数组。例如:
为了程序的复用性,我们一般使用zero(char* arr, size_t n);这种函数签名。
这种模板形式虽然比只能处理char[10]这种类型的zero函数,适用性大一些,但是它仍不能处理广义上的连续char内存。
zero(char*arr, sizr_t n)的灵活性是有了,问题是用户(调用者)可能把n填错。例如:
为了解决这个问题,我们需要写很繁琐的代码:
有了std::span, 我们可以:
我们可以手工粗陋的制作一个span类,虽然它不符合STL容器规范,但是可以看出主要核心骨架
本文:
C++20中的std::span怎么使用的详细内容,希望对您有所帮助,信息来源于网络。