stl stack和top()函数有问题

时间:2013-09-25 23:54:25

标签: c++ stl stack

以下是我遇到问题的代码:

if (stack_flag == true) {
    bool hangar = false;
    while (hangar == false) {
        unsigned int index = s_move.top();
        unsigned int edge = map[index].get_which_edge();
        char current = map[index].get_char();
        s_move.pop();

如果我的程序接受命令行输入,则使用堆栈容器;那就是堆栈标志。这是我循环的第一行。堆栈初始化为一个值。我遇到的问题是我需要获取堆栈顶部元素的值,我还需要在堆栈之后立即弹出该元素,但top()函数返回对顶部值的引用。当我弹出值时,引用不再有用。还有另一种方法可以从堆栈中获取值,同时立即弹出它吗?我的错误是:s_move was not declared in this scope.

1 个答案:

答案 0 :(得分:1)

这样可以正常工作:

unsigned int index = s_move.top();

因为index是l值。使用top()返回的引用制作副本 一旦你有一个副本弹出顶部将不会影响索引。

另一个问题:

  

我的错误是:s_move未在此范围内声明。

是因为代码不知道对象s_move 也许你忘了包含适当的头文件。