gpt4 book ai didi

c++ - 二维矩阵的推送和弹出操作并在 C++ 中显示它们

转载 作者:行者123 更新时间:2023-11-27 23:59:53 32 4
gpt4 key购买 nike

我是c++的新手,刚刚学习栈的压入和弹出操作。我写了一个小程序来从堆栈中压入和弹出一些元素。我的示例程序如下:

// stack::push/pop
#include <iostream> // std::cout
#include <stack> // std::stack

int main ()
{
std::stack<int> mystack;

for (int i=0; i<5; ++i) mystack.push(i);

std::cout << "Popping out elements...";
while (!mystack.empty())
{
std::cout << ' ' << mystack.top();
mystack.pop();
}
std::cout << '\n';

return 0;
}

但现在我想将多个 3*3 矩阵压入堆栈,并希望使用 mystack.top() 获取每个矩阵,并使用 mystack.pop 操作弹出每个矩阵并显示整个矩阵。如何为多个矩阵运算实现堆栈?

样本矩阵可以是这样的:

float A[3][3]={{1.0,2.0,3.0},{1.0,2.0,3.0},{1.0,2.0,3.0}};
float B[3][3]={{1.0,2.0,4.0},{1.0,5.0,3.0},{8.0,2.0,3.0}};

最佳答案

您可以使用 std::array<std::array<float,3>,3>为了这。普通数组不会被自动复制,并且不符合存储在 std::queue 中的数据类型的需要。 :

std::array<std::array<float,3>,3> A {{{1.0,2.0,3.0},{1.0,2.0,3.0},{1.0,2.0,3.0}}};
std::array<std::array<float,3>,3> B {{{1.0,2.0,4.0},{1.0,5.0,3.0},{8.0,2.0,3.0}}};

然后您可以简单地将堆栈定义为:

std::stack<std::array<std::array<float,3>,3>> myStack;

为了使其更具可读性和更易于输入,您可以使用 usingtypedef :

typedef std::array<float,3>,3> My3x3Matrix;

// ...

std::stack<My3x3Matrix> myStack;

myStack.push(A);

// ...

My3x3Matrix C = myStack.top();
myStack.pop();

关于c++ - 二维矩阵的推送和弹出操作并在 C++ 中显示它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40000400/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com