gpt4 book ai didi

c++ - pop_back() 不工作

转载 作者:太空宇宙 更新时间:2023-11-04 16:01:28 26 4
gpt4 key购买 nike

我有以下创建 Stack 对象的主程序,用 double 填充它,然后弹出它们。代码文件很好,但 pop_back() 部分似乎不起作用,而 s.back() 确实返回了正确的值。这怎么可能?

#include "Stack.h"
#include <iostream>
#include <deque>
using namespace std;
int main() {

Stack<double> s(0,0.0);

// Write doubles into Stack
int i ;
for (i=0 ; i<15 ; i++) {

s.push(i*i) ;

}


// Read doubles back from fifo
while (!s.empty()) {
double val = s.pop() ;
std::cout << "Popping value " << val << " from stack" << std::endl ;

}

return 0 ;

}

我的头文件是这样的,我省略了与问题无关的部分。

#ifndef STACK_H
#define STACK_H

#include <iostream>
#include <deque>

template<class T>
class Stack {

public:

Stack(int len, T defval): s(len+1, defval) {

return;
}

~Stack() {

//delete [] s;
}

void push(T c) {

s.push_back(c);

}

T pop() {

return s.back();
s.pop_back();

}

private:

std::deque<T> s; //Array<T> s;

};

#endif

最佳答案

T pop() {
return s.back();
// ^^^^^

s.pop_back(); // <- unreachable!
}

当您从函数返回时,所有后续指令都将永远不会执行


s.back() 的结果存储在临时变量中:

T pop() {
auto back = s.back();
s.pop_back();
return back;
}

关于c++ - pop_back() 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43141000/

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