gpt4 book ai didi

C++ 自定义堆栈打印问题

转载 作者:行者123 更新时间:2023-11-28 00:09:28 26 4
gpt4 key购买 nike

我正在创建一个自定义类 Stack 来存储几个字符串变量。当我尝试打印堆栈时,它说堆栈总是空的,这是不正确的。我正在使用 vector 来表示自定义堆栈,所以我处理打印方法的方式应该有效,但由于某种原因它不起作用。我的错误是什么?它在我的 isEmpty 方法中吗?

void stack::printStack() {

std::vector<std::string> v;

if(stack::isEmpty()) {

std::cout << "Stack is empty! " << std::endl;
}
else {
for(int i = 0; i != v.size(); i++) {
std::cout << v[i] << std::endl;
}
}
}

最佳答案

您正在返回底层 vector 的拷贝

std::vector<std::string> stack::getVector();

这会导致所有调用,例如 stack::getVector().push_back(n);不修改 stack::v ,而是修改返回的临时文件。

我不明白,为什么你不应该使用 v直接在成员函数中:

v.push_back(n);

或者,如果您不想这样做(出于某种原因),请制作 getVector返回常量引用和非常量引用:

std::vector<std::string> const& stack::getVector() const { return v; };
std::vector<std::string> &stack::getVector() { return v; };

请注意,您正在使用 std::vector<std::string> & 破坏封装返回过载。

关于C++ 自定义堆栈打印问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33858494/

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