gpt4 book ai didi

C++ 等效于 R 列表

转载 作者:行者123 更新时间:2023-11-28 00:40:26 25 4
gpt4 key购买 nike

寻找 C++ 中的东西,以便于存储和访问不同大小的矩阵。我通常使用 R,在 R 中我可以使用循环并将矩阵存储在列表中,如下所示(玩具示例)

myList <- list(1)
for(i in 1:10){
myList[[i]] <- matrix(rnorm(i^2),i,i)
}

这给了我一个列表,然后 myList[[i]] 会给我第 i 个矩阵。 C++中有这样的东西吗?我见过 Boost 函数可以处理不同大小的数组,但无法将它们应用于矩阵。如果有助于缩小响应范围,请尝试使用 Eigen 或 Armadillo。

最佳答案

您要查找的答案分为两部分,即

  1. 矩阵。
  2. 包含所有这些矩阵的容器。

因此,对于矩阵:如果您打算进行线性代数运算,我建议您使用一些特殊的库,例如 Armadillo它带有许多预定义的矩阵函数(例如特征值、矩阵乘法等)。如果它只是没有特殊操作的基本 2D 数据存储,那么我建议使用 vector 的 STL vector 来表示您的矩阵。这些容器的大小是动态的(可以在执行期间随意更改)并且所有元素都可以通过索引访问。正如帕特里克所说,可以在此处找到更多信息:cppreference.com .

一个用 1 填充的 3x3 整数矩阵的例子是

std::vector< std::vector<int,int> > matrix(3,std::vector<int>(3,1));

然后,您必须将这些矩阵存储在某个地方。为此,这实际上取决于您的需求。最简单的解决方案是矩阵 vector (实际上是 vector 的 vector )。您的代码的行为与在 R 中完全一样,您将能够通过索引访问矩阵。等效的 C++ 代码是

#include<vector>
using namespace std;
typedef vector< vector<int,int> > int_matrix_t;
...
vector<int_matrix_t> my_vector_of_matrices(10);
for (int i = 0; i<10; ++i) {
my_vector_of_matrices[i] = some_function_that_outputs_a_matrix(i);
}

但是还有很多其他容器可用。你应该调查this chart并为自己选择!

关于C++ 等效于 R 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19171335/

25 4 0
文章推荐: javascript - HTML - 为