微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从 C++ 中的变量中提取值

如何解决从 C++ 中的变量中提取值

我是 C++ 新手,我必须从库中调用一个函数,该函数返回矩阵 G 的特征值和特征向量;这是函数的模板

std::array< std::pair< Number,Tensor< 1,dim,Number > >,std::integral_constant< int,dim >::value >   eigenvectors   (const SymmetricTensor< 2,Number > &  T,const SymmetricTensorEigenvectorMethod  method = SymmetricTensorEigenvectorMethod::ql_implicit_shifts);

我以这种方式声明了输出“eigs”:

std::array< std::pair< double,double >>,3> eigs;

我以这种方式调用函数

eigs = eigenvectors(G);

我的问题是:输出“eigs”是矩阵还是向量?因为当我尝试提取 eigs[0][0] 时出现错误

"no match for 'operator[]' (operand types are 'std::array<std::pair<double,dealii::Tensor<1,3> >,3>::value_type' {aka 'std::pair<double,3> >'} and 'int') cout << eigs[0][0];"

任何帮助将不胜感激,

洛伦佐

解决方法

eigs 是一个 std::array,但 eigs 的每个元素都是一个 std::pair。所以你想要的是这个:

cout << eigs[0].second[0];

这将访问 dealii::Tensor 的第一个元素,该元素包含在 .secondstd::pair 成员中,位于 eigs 变量的第一个位置(并且再次,eigsstd::array)。

我不熟悉 deal.II,但我认为可以像访问数组或向量一样访问 dealii::Tensor(即使用 operator[])。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。