C/C++一直都有数组越界这个陷阱,越界后容易造成数据不一致,程序运行状态混乱,coredump。
C++20提供了span容器,他用于表示一段连续的内存空间,并且这段空间拥有边界检查功能。
需要注意的是,span并不拥有这段内存空间,他是一个展示该内存空间的方式。
#include <span>
#include <iostream>
using namespace std;
void f(span<int> s)
{
for(int i=0; i<s.size(); ++i)
{
s[i] = i;
}
}
void p(span<int> s)
{
for(auto it=s.begin(); it!=s.end(); ++it)
{
cout<<*it<<" ";
}
cout<<endl;
}
int main()
{
int d[10] = {0};
f(d);
p(d);
return 0;
}
运行程序输出:
0 1 2 3 4 5 6 7 8 9
可以看到span相当于对数组的一个引用,而且他还能维护这个数组的大小,同时也可以通过迭代器对数组进行访问。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)