c++ - 使用犰狳做 `Q.slice(a).col(b)` 的更有效方法
问题描述
有没有比犰狳从立方体中提取列更有效的方法Q.slice(a).col(b)
?
类似于tube
,但对于最后 2 个维度而不是前 2 个维度。
解决方案
获取指向所需切片的所需列的第一个元素的指针。然后将该指针传递给vec 类的高级构造函数之一。例子:
cube C(6, 5, 4, fill::randu); // cube with 4 slices
vec v1 = C.slice(2).col(3); // normal way of extracting a vector
vec v2( &C(0,3,2), C.n_rows, false, false); // alternative way
请注意,虽然这有效,但它并不安全。如果C
调整大小或删除,v2
将使用未分配的内存或来自不同对象的内存。在第一种情况下,它可能会导致段错误。在第二种情况下,它是信息泄漏。
如果C
是 a const cube
,则使用const_castconst
从获得的指针中剥离。同样,这也不安全。
推荐阅读
- javascript - 可访问性:`tabindex="-1"` 是否意味着该元素对屏幕阅读器不可见(类似于 `aria-hidden="true"`)
- xml - UPS Quantum View API 错误:失败:给定请求没有文件。(330023)
- reactjs - Formik 在 useEffect 中使用 setErrors 方法
- javascript - 未设置 useState 初始状态
- d3.js - 在 D3 中将两个具有相同类的 g 分组
- vue.js - 如何将 Vue 组件导入 Vue 并替换一个值?
- scala - 带有布尔默认值的 Scala 中带有 getOrElse 的选项
- memory - 运行时内存(EXE、DLL)损坏
- php - LiipImagineBundle 不使用过滤器渲染图像
- amazon-web-services - 站点无法通过 LTE 访问,但可以通过 WiFi 正常工作 - AWS Route53