gpt4 book ai didi

c++ - 数组堆栈使用(参数传递/返回)

转载 作者:行者123 更新时间:2023-11-28 06:24:08 25 4
gpt4 key购买 nike

我必须处理几个需要将数组堆栈作为参数的函数。

这是例子:

using namespace std;

typedef vector<array<array<short,2>,64>> dmat;
typedef stack<array<short,2>> lifo;
typedef array<short,2> array2;

array2 posible(lifo& pila, int j){ // Gets the stack by reference
array2 ret=pila.top();
return ret;
}

问题是:

  • 这是正确的吗?我的意思是,我可以这样分配和返回堆栈中的元素吗?
  • 假设我已经声明了 dmat sol 并且我想将堆栈 pila 复制到 vector sol 中的第一个元素。它是否正确? sol[0]=lifo;
  • 这种语法 pila.top()[1] 合法吗?

最佳答案

Is this correct? I mean, can I assign and return the element in my stack that way?

现在您已经更改了类型以匹配,是的。这将在堆栈顶部返回数组的拷贝(不是引用)。

在原问题中,没有;正如我确定您的编译器会说的那样。 short 数组之间没有隐式转换(top() 给你)和一个 int 的数组(您尝试将其分配给)。您可以通过值或引用返回相同的数组类型;如果出于某种原因需要更改类型,或者编写一个小的转换函数。

Is this correct? sol[0]=lifo;

没有;再次,编译器应该告诉你。您正在尝试分配 stackarray .更改 dmat 的类型至 vector<lifo> , 你可以复制一个 lifo进入其中。

Is this syntax pila.top()[1] legal?

是的,这给出了位于堆栈顶部的数组的第二个元素。 top()返回对该数组的引用,即 [1]可以索引。

关于c++ - 数组堆栈使用(参数传递/返回),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28813245/

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