我想知道如何在一堆中获得特定值(/ stack?抱歉,我是法国人:P)。我必须将堆叠的顶峰拆开,使其成为一个整数并得到桩的[summit-int]值,这样我才能成为新的顶峰。
感谢您的帮助:)
(这是一个可能会让它更清晰的例子:
例如,有一堆[1 2 3 4 5 2](其中顶峰在右边),指令将展开i< - 2,转换桩[1 2 3 4 5],然后复制值3,从右边开始,从0开始,然后堆叠它,然后给出最终的堆栈[1 2 3 4 5 3]。)
答案 0 :(得分:1)
试试std::vector<int>
。它似乎是为你正在做的设计精心设计的。
使用back()
获取堆栈顶部的值,然后pop_back()
将其删除。
使用stack[n]
获取stack
的第n个元素的副本。
答案 1 :(得分:1)
如果您要经常通过索引访问数据结构,那么似乎可能不是最好的。
你可以做什么如果,可能只如果你正在使用Visual Studio和Microsoft C ++实现而你需要偶尔这样做,你可以告诉你std::stack
使用向量作为容器而不是默认std::deque
,并使用_Get_container()
来访问它。 std::vector
允许索引访问。这是一个打印我堆栈中第一个元素的例子。
#include <string>
#include <stack>
#include <iostream>
#include <vector>
int main(void) {
std::stack<std::string, std::vector<std::string> >stringStack;
stringStack.push("Hello");
stringStack.push("World");
std::cout << stringStack._Get_container()[0];
}
Output: Hello