处理瓦拉阵列
Processing Valarrays
提前感谢您的关注。
所以我正在处理来自 STL 的 valarray,我对使用闭包捕获值感到好奇。
为什么我不能通过引用传递值。以以下代码为例:
#include <iostream>
#include <valarray>
#include <functional>
int main()
{
std::valarray<int>arr={1,2};
std::valarray<int>arr2;
arr2=arr.apply([](int a){return a+=2;});
/* arr2=arr.apply([&](int a){return a+=2;});
error: no matching for call to std::valarray<int>::apply(main()::<lambda(int)> */
for(int x: arr2){
std::cout<<x;
}
return 0;
}
谢谢!
与采用谓词或其他可调用对象形式的几乎任何其他标准库函数不同,std::valarray<T>::apply
函数实际上只接受指向函数的实际指针,而不是使用模板来接受任何可调用的内容。
无捕获的 lambda 可以转换为指向函数的指针,就像apply
函数需要的一样。但是,如果您在lambda中使用捕获,那么这不再可能。
相关文章:
- 警告处理为错误这里有什么问题
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 处理多个异常集合的C++方法
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- OpenMP阵列性能较差
- 使用流处理接收到的数据
- 获取日期异步信号安全吗?如果在信号处理程序中使用,它会导致死锁吗
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 基于多个条件处理地图中的所有元素
- 如何用数字处理log(0)
- SSL上的`curl_easy_send`和`curl_asy_recv`:如何处理`CURLE_AGAIN`
- 如何将三维尺寸不固定的三维阵列展平为一维阵列
- 处理瓦拉阵列
- 在Cython中处理C 阵列(带有Numpy和Pytorch)
- opengl驱动程序在有限的VRAM中处理大型纹理阵列的效果如何
- 最佳现代C 处理std ::共享_ptr的阵列
- 处理内存泄漏和更改阵列大小
- 正在处理将三维阵列保存到文件并加载
- 处理来自动态按钮阵列的信号
- 处理线性上采样音频阵列