c++ - 如何在 C++ 中有效地访问数组的多个元素?

标签 c++ arrays matlab matrix matrix-indexing

这是我的第一篇文章,希望我能达到标准...

为了提高效率,我正在将最初用 MATLAB 编写的程序翻译成 c++(我对此很陌生)。我实际正在处理的这段代码恢复了对一个 vector (矩阵)的各种索引的一步访问。例如,如果 M1 是一个大小为 10x15 的矩阵,程序将定义一个新矩阵,如下所示:

idxs1 = [1 2 3];
idxs2 = [1 2 3 4 5];
M2 = M1 (idxs1 , idxs2);

结果 M2 为大小为 3x5 的矩阵。现在,我猜想 MATLAB 实际上所做的是通过索引给定的 M1 的各个位置一一访问,然后通过重新排列获取的许多内容来构造 M2,所有这些都非常有效。

我的问题是,如何在 c++ 中重现这种机制?据我所知,没有直接的方法可以连续访问数组的各种索引,而且我使用的 for 循环似乎相当麻烦。也许有一些聪明的方法可以在不要求“太多”处理器时间的情况下做到这一点?此外,出于教育目的,如果有人可以解释执行此类操作时 MATLAB 实际做了什么,我将不胜感激。

提前致谢,对于给您带来的不便,我们深表歉意!

P.S:为了防止问题增加任何内容,我正在使用 MEX 文件来链接两种语言。 P.S2: 顺便说一句,我发现了一些相关的问题,但是关于其他语言:

最佳答案

“Armadillo 是一个高质量的 C++ 线性代数库,旨在实现速度和易用性之间的良好平衡

可用于直接在 C++ 中开发算法,或将研究代码快速转换为生产环境;语法 (API) 故意类似于 Matlab"

链接:http://arma.sourceforge.net/

关于c++ - 如何在 C++ 中有效地访问数组的多个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34585538/

相关文章:

c++ - 检查一个字符串是否是另一个字符串的排列

C++ 复制构造函数签名 : does it matter

c++ - 用C++实现LRU缓存

matlab - 如何压制数字?

c++ - 如何从新的 operator+(模板类)返回具有转换类型的对象

Objective-C 数组迭代速度

c++ - 排序多维数组并保持索引 C++

Javascript通过相同的对象键重新排列数组

matlab - 我如何有效地将图像与分辨率是原始图像两倍的图像进行比较?

excel - 在 MATLab 中从同一个 Excel 工作表导入两组数据