C++ 如何在一堆中获得一个特定的值?(C+;+;)

C++ 如何在一堆中获得一个特定的值?(C+;+;),c++,stack,C++,Stack,我想知道如何在一堆中获得一个特定的值(/stack?对不起,我是法国人:p)。我必须解开堆的顶点,使其为int,并获得堆的[summit int]值,这样我才能使其成为新的顶点 谢谢你的帮助:) (以下是一个可能更清楚的例子: 例如,对于一堆[1 2 3 4 5 2](其中顶点位于右侧),指令将取消堆栈iTrystd::vector。它似乎是为您正在做的事情精心设计的。 使用back()获取堆栈顶部的值,然后使用pop_back()将其删除。 使用stack[n]获取stack的第n个元素的副本

我想知道如何在一堆中获得一个特定的值(/stack?对不起,我是法国人:p)。我必须解开堆的顶点,使其为int,并获得堆的[summit int]值,这样我才能使其成为新的顶点

谢谢你的帮助:)

(以下是一个可能更清楚的例子:

例如,对于一堆[1 2 3 4 5 2](其中顶点位于右侧),指令将取消堆栈iTry
std::vector
。它似乎是为您正在做的事情精心设计的。 使用
back()
获取堆栈顶部的值,然后使用
pop_back()
将其删除。
使用
stack[n]
获取
stack

的第n个元素的副本。如果经常通过索引访问数据结构,则该数据结构可能不是最好的

<> >你可以做的<强> >如果,并且可能只有当你使用VisualStudio和微软C++实现时,你有时需要做它,你就可以告诉<代码> STD::Stase使用向量作为容器,而不是默认的<>代码::DeQue/Cuff>,并使用<代码>以获得对它的访问。
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];
}
#包括
#包括
#包括
#包括
内部主(空){
std::stackstringStack;
stringStack.push(“你好”);
stringStack.push(“世界”);

std::cout
pop_-back()
确实删除了最后一个值,但它什么也不返回。要获取最后一个值,您必须先调用
back()
,它只检查值,然后调用
pop_-back()
实际删除它。我一定在想其他的
pop()
函数。我已经更正了错误。除了“top”之外,我不知道如何复制
std::stack
的元素元素。这不是一个好的解决方案。谁说实现提供了一个
\u Get\u container
方法呢?如果需要索引,堆栈是错误的数据结构,这是对的。@ChristianHackl:好极了!我用VS太多了。你可能想编辑你的答案,并提到它取决于VC实现的细节所有。French pile实际上是一个堆栈。最近的值通常被简单地称为top(而不是summit)。添加到堆栈中通常被称为push,删除它们则被称为pop(而不是unstack)。