html - 如何传递数组代替指向函数的指针
问题描述
我有以下函数 myfunc ,它将 std::span 作为变量。
const foo* foos = nullptr;
uint32_t fooNum = 0;
std::span<const foo> fooSpan = std::span<const foo>(foos, fooNum);
myfunc(fooSpan)
现在我有另一组数组形式的变量
const foo fooArray[];
uint32_t numfoo = 0;
这是用这些变量调用 myfunc() 的正确方法吗
std::span<const foo> fooSpan = std::span<const foo>(foosArray, numfoo);
myfunc(fooArray)
解决方案
如果myfunc
得到原型
void myfunc (std::span<const foo>);
那么myfunc(fooArray)
只有当fooArray
是数组const foo
并且有初始化程序可用或者是一个时才合法std::array
,即可以推断出它的大小以考虑span
将使用哪个构造函数,例如
using foo = int;
const foo arrFunc[] = {3,4,5};
std::array<const foo,3> arrFunc2{3,4,5};
void myFunc(std::span<const foo>) {}
int main()
{
myFunc(arrFunc);
myFunc(arrFunc2);
}
使用类似的东西myFunc({arrFunc,numfoo});
也是可能的,那就是span
在适当的位置创建一个,在这种情况下arrFunc
可以是一个指针。
推荐阅读
- react-native - 你如何安装native-base?
- python - 如何在 Jupyter Notebook 中运行单元格时编辑变量?
- java - Clojure 访问静态内部类构建器期望 var 但映射到构建时的类错误
- c# - 为什么我不能创建一个列表
C# 中的匿名类型? - javascript - 如何管理 Slick-Nav?当我在部分中包含 Php 代码时,Slick-Nav 会产生问题
- xamarin - 在 Xamarin Forms 中挂起的 PostAsync 在模拟器上工作,但在实际手机上挂起
- php - 将wordpress网站从windows中的localhost迁移到centos7
- ios - 如何在 WKWebview 中处理文件上传?
- laravel - {{Input::get('min_price')}} 不起作用。如何解决这个问题?
- java - 查找字符串中的对应元素