gpt4 book ai didi

c++ - 为什么不允许使用此引用集?

转载 作者:太空宇宙 更新时间:2023-11-04 15:00:06 25 4
gpt4 key购买 nike

C++新手,我想如果我定义一个容器并在里面指定它的类型为string,那么它应该从string中出来而不用大惊小怪,我想具有此字符串的引用变量别名。显然,我在这里遗漏了一些东西,因为编译器提示它无法将 void 转换为字符串。有人可以帮忙澄清一下吗?谢谢。

#include <queue>
#include <string>
#include <iostream>

using namespace std;


int main(int argc, char** argv) {
std::queue<std::string> myqueue;

myqueue.push("val1");
myqueue.push("val2");

while (!myqueue.empty()) {
std::string & s = myqueue.pop();
std::cout << s << endl;
}
}

最佳答案

那是因为 std::queue::pop不返回任何东西(无效)。

如果你想访问第一个元素然后删除它,你应该使用std::queue::front然后 std::queue::pop .

while (!myqueue.empty()) {
std::string & s = myqueue.front();
std::cout << s << endl;
myqueue.pop();
}

我搬家了myqueue.pop();std::cout << s << endl; 之后避免悬挂引用(对不再存在的对象的引用)。

关于c++ - 为什么不允许使用此引用集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52139670/

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