尝试使用堆栈创建队列.为什么我会遇到int转换错误的空白
Trying to create queue using stacks. Why am I getting a void to int conversion error?
这是我第一次使用两个堆栈创建队列的尝试。我不确定我是否在正确的轨道上,因为由于'=': cannot convert from 'void' to 'int'
错误,我无法检查工作。错误在于这一行:x = enQ.pop();
。ENQ不是一个函数,那么它怎么可能无效?
我的代码尚未完成。
stack<int> enQ;
stack<int> deQ;
void enQueue(int x) {
enQ.push(x);
cout << x << " has been added to the queue." << endl;
}
void deQueue() {
while (enQ.size() != 0) {
int x;
x = enQ.pop();
enQ.pop();
deQ.push(x);
cout << x << " had been pushed to DEQUEUE" << endl;
}
}
因为函数std :: stack :: pop nothing nothing nothing(即其返回类型为 void
)。
您可以更改
x = enQ.pop();
to
x = enQ.top();
enQ.pop();
您可以检查此帖子,以了解为什么STL将T kind_of_pop_and_get()
分离为pop
和top
。以前只能删除堆栈上的顶部元素,后者只需复制顶部元素而无需接触堆栈即可。
为什么不std :: queue :: pop返回值。?
简而言之,它是例外安全。
kind_of_pop_and_get()
会做
- 从堆栈中删除元素。
- 然后将元素返回接收器的
copy assignment/constructor
。
例外可能会在对象构造过程中抛出,并开始堆栈放松。然后,即使kind_of_pop_and_get()
调用未完成,堆栈状态也可能受到影响。
相关文章:
- 为什么在全局范围内使用"extern int a"似乎不行?
- int(c) 和 c-'0' 之间的区别。C++
- 编译包含字符串的代码时遇到问题
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 为什么野牛仍在使用"int yylex(void)",却找不到"int yylex(YYS
- 有符号的int和int-有没有一种方法可以在C++中区分它们
- 请解释这句话(cout<<1+int((a<b)^((b-a)&1) )<<endl
- 是否可以从int转换为enum类类型
- 不能在初始值设定项列表中将非常量表达式从类型 'int' 缩小到'unsigned long long'
- 向量 <int> a {N, 0} 和 int arr a[N] = {0} 的时间复杂度有什么区别
- 'short int'持有的值溢出,但"自动"不会溢出?
- 如何在C++中将一个无符号的 int 转换为两个无符号的短裤?
- 调用'begin(int [n])'没有匹配函数
- 当我向 vector<int *> 添加元素时,我遇到了一些问题
- 尝试使用堆栈创建队列.为什么我会遇到int转换错误的空白
- 串行通信 - 我在将传入的字符数组转换为 int 时遇到问题
- 初始化无符号的 int *数组时遇到问题
- 在将字符串转换为int数组时,在putty上运行程序会遇到麻烦
- 读取int*类型的结构属性值时遇到问题
- 我在C++中遇到错误 - 错误:无法将"cv::P oint_"转换为"cv::P oint* <int>{aka cv::P oint_<int>*}" 作为回报