怎么使用span解决数组退化和越界访问

技术怎么使用span解决数组退化和越界访问本篇文章给大家分享的是有关怎么使用span解决数组退化和越界访问,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。数组

本文讲述如何使用span解决阵列降级和跨界访问问题。边肖觉得很实用,所以分享给大家学习。希望你看完这篇文章能有所收获。让我们和边肖一起看看。

数组是C语言继承自C语言的一个特性。它易于使用,同时可以提供出色的性能,因此得到了广泛的应用。但是简单的另一面是风险,最大的两个问题是阵列退化和距离误差。如何提前利用C 20的新特性跨度,解决阵列降级和跨界访问的问题。

首先,看看使用数组的最常见代码:

int data[10];for(size _ ti=0;isizeof(数据)/sizeof(数据[0]);I){ data[I]=0;}

当定义一个数组时,同时存在关于元素数量的信息。这些信息可以用来操纵数组。但是,当数组作为参数传递给函数时,它只能作为指针传递,这就是数组退化。为了正确掌握阵列的大小,一般需要同时传输阵列的大小信息。例如,以下初始化函数是这样的:

voidinit_data(intbuffer[],size _ tsize){ cout ‘ size=’ sizeendl;for(GSL : indexi=0;isizeI){ buffer[I]=I;}缓冲区[4]=40;缓冲区[20]=20;//跨境访问}

即使函数参数被正式声明为数组,所有行为也与指针完全相同。另一个问题是,因为数组是完全暴露的数据结构,所以没有保护。例如,在代码的第8行,即使访问的第20个元素已经超过了前10个元素,该操作也将正常通过。但接下来不知道哪一刻,这个操作的影响会以完全不相关的形式表现出来。数组大小信息、传递错误、越界操作的获取具有易入门、难排的特点,是很多程序员的噩梦。

为了解决这个问题,GSL引入了一个模板类span,它可以同时管理数组的地址和大小。从C 20开始,这个类将成为C的标准函数。

使用span类的初始化函数如下:

void init _ data(GSL :3360 spaintbuffer){ cout ‘ size=’ buffer . size()} endl;int value=0;for(autoit=buffer . begin();它!=buffer . end();it){ * it=值;}缓冲区[4]=10;缓冲区[20]=20;//将触发断言}

只要将函数参数声明为gsl:spanint buffer,大小信息就由span template类管理,然后数组就可以像向量一样使用了。如果发生越界访问,将触发断言。

使用数组和span传递参数的示例代码如下:

int main(){ int data[10];for(size _ ti=0;isizeof(数据)/sizeof(数据[0]);I){ data[I]=0;}//使用数组传递参数init_data(data,5);//使用span传递参数init_data(数据);返回0;}

与用数组调用相比,它在增强功能(范围检查等)的同时简化了数组的使用。)!

以上就是如何用span解决阵列降级和跨界访问。边肖认为,一些知识点可能会在我们的日常工作中看到或使用。我希望你能通过这篇文章学到更多的知识。更多详情请关注行业信息渠道。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/79844.html

(0)

相关推荐

  • html5文件读取进度条(如何设置html5进度条)

    技术html5如何实现进度条本篇内容主要讲解“html5如何实现进度条”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“html5如何实现进度条”吧!

    攻略 2021年12月23日
  • 何为php中生成器

    技术何为php中生成器这篇文章主要讲解了“何为php中生成器”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“何为php中生成器”吧!1、生成器提供了一种更容易实现简单对象迭

    攻略 2021年10月22日
  • TransOMCS中从语言图中提取公共知识的实例分析

    技术TransOMCS中从语言图提取常识知识的示例分析今天就跟大家聊聊有关TransOMCS中从语言图提取常识知识的示例分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有

    攻略 2021年12月16日
  • 「IOI2021」Dungeons

    技术「IOI2021」Dungeons 「IOI2021」Dungeons题目
    点这里看题目。
    分析
    比较考察基础的观察和诡异的优化的题目,值得一试。
    算法 1
    直接模拟,复杂度为 \(O(qs)\)。

    礼包 2021年11月18日
  • 形容春天的词语四个字,春天是一个什么样的季节四字词语

    技术形容春天的词语四个字,春天是一个什么样的季节四字词语1形容春天的词语四个字、莺歌燕舞解释:黄莺歌唱,燕子飞舞,形容大好春光或比喻大好形势。2、春暖花开
    解释:春天气候温暖,百花盛开,景色优美。比喻游览、观赏的大好时机

    生活 2021年10月21日
  • ps颜色模式,ps中怎么转换色彩模式

    技术ps颜色模式,ps中怎么转换色彩模式工具/原料电脑Adobe Photoshop CS6(64 Bit)方法/步骤1、首先打开PS,见下图展示ps颜色模式。2、打开PS后,点击菜单栏的文件,打开一张图片,见下图展示。

    生活 2021年10月23日