c++ - 每次我尝试创建稀疏矩阵时的不同行为
问题描述
我正在尝试从 Triplets 创建一个稀疏矩阵。不知何故,下面的程序要么打印一个只包含零的矩阵,要么我得到
^[[在抛出 'std::bad_alloc' what()的实例后调用 Bterminate :std::bad_alloc 已中止。
当我在注释掉的按钮处添加代码时,它有时会开始工作,有时我会再次得到零。
我不明白这种行为。它似乎与内存有关,但为什么要打印出东西(在底部代码中注释之后)改变顶部发生的事情?
我的方法有问题吗?还是我的设置有问题?我刚刚从http://eigen.tuxfamily.org下载了最新的稳定版本。
#include <iostream>
#include <Eigen/SparseCore>
#include <Eigen/Dense>
int main()
{
int n = 10;
std::vector<Eigen::Triplet<double> > ijv;
for(int i; i < n; i++)
{
ijv.push_back(Eigen::Triplet<double>(i,i,1));
if(i < n-1)
{
ijv.push_back(Eigen::Triplet<double>(i+1,i,-0.9));
}
}
Eigen::SparseMatrix<double> X(n,n);
X.setFromTriplets(ijv.begin(), ijv.end());
std::cout << Eigen::MatrixXd(X) << std::endl;
/* std::cout << "Row\tCol\tVal" <<std::endl;
for (int k=0; k < X.outerSize(); ++k)
{
for (Eigen::SparseMatrix<double>::InnerIterator it(X,k); it; ++it)
{
std::cout << it.row() << "\t"; // row index
std::cout << it.col() << "\t"; // col index (here it is equal to k)
std::cout << it.value() << std::endl;
}
}
*/
}
解决方案
推荐阅读
- node.js - Soundcloud API 从轨道 URL 创建流
- postgresql - Postgres 执行带有返回表的 Stmt
- excel - 遍历行,为每一行创建图表,其中包含来自特定列的值,直到空白行
- r - 如何将嵌套列表转换为数据框
- hyperlink - Apexchart 时间线:如何为系列的每个条设置自定义链接
- python - 在 JSON 中分离唯一/重复数据
- networking - 外部 IP 地址 gcp 控制台和 API 计数不匹配
- cofoundry - 有没有办法重用 Cofoundry 中的内置 HTML 编辑器
- laravel - Laravel excel为此csv数据结构导入csv配置?
- reactjs - reactJS中的useContext带有导致未定义对象的自定义钩子