arrays - 有没有办法在 C 标准库中以向量化形式表示数组?
问题描述
我正在尝试输入以下数组
float array[3] = {a, b, c};
进入一个函数说
3DLocation(float x, float y, float z)
作为
3DLocation(array[3])
而不是作为
3DLocation(array[0], array[1], array[2])
像 R 或 Python(带有某些库)等那样矢量化。
有没有办法在标准库中做到这一点?
如果没有,有没有办法让一个函数只用标准库来做到这一点?
如果没有,什么是可以帮助我做到这一点的图书馆?
另外,“矢量化”是我正在寻找的术语吗?
而且,“表达”是对的,还是我应该编辑我的问题以改为“访问”?
解决方案
有没有办法在标准库中做到这一点?
C 没有 Python 的一元运算符的内置模拟*
(一元*
在 C 中具有不同的含义,尽管在某些方面类似)。
如果没有,有没有办法让一个函数只用标准库来做到这一点?
您可以编写一个辅助函数来完成它:
void call_unpacked(void (*func)(float, float,float), float args[]) {
func(args[0], args[1], args[2]);
}
然后,您可以根据需要多次使用它:
call_unpacked(3DLocation, array);
你也可以写成call_unpacked()
一个宏,它有一些优点,或者你可以写一个专门包装的函数或宏来代替通用包装器3DLocation()
:
void 3DLocation_unpacked(float a[]) {
3DLocation(a[0], a[1], a[2]);
}
但是标准库中没有这样的函数或宏。
如果没有,什么是可以帮助我做到这一点的图书馆?
图书馆推荐的请求在这里是题外话。
另外,“矢量化”是我正在寻找的术语吗?
Python 中的常用术语(因为您提到该语言)涉及“解包”一词的形式,例如我在前面使用的。我认为您所谈论的内容没有任何跨语言共识。
而且,“表达”是对的,还是我应该编辑我的问题以改为“访问”?
“快递”对我来说似乎不合适,尽管我明白你的意思。“访问”更糟糕。就个人而言,我倾向于坚持使用“解包”,改写问题以使其适合。
推荐阅读
- ruby-on-rails - Rails:表单助手未正确保存参数
- javascript - 使用 GraphQL 在单个字段上设置解析器
- angular - 基于角色的Angular 4路由默认页面
- reactjs - 如何在测试中获取反应应用状态 ['Key'] 的值?
- ruby-on-rails - 如何在 Rails 4 中设置嵌套资源控制器?
- javascript - 如何让我的提交按钮在不离开当前页面的情况下显示上传的文件
- android - Gradle 同步失败:读取超时
- python - Python将复杂的字符串转换为字典列表
- android - 如何在 Kotlin 中关闭 Android 应用程序
- reactjs - 在 Redux 中在哪里存储类实例以实现可重用性?