stack<int>QStack
时间: 2023-12-17 12:02:20 浏览: 64
这是一个 C++ 中标准模板库中的 stack 类型的定义,它可以创建一个名为 QStack 的栈,其中存储的元素类型为 int。栈是一种后进先出(LIFO)的数据结构,可以使用 push() 方法将一个元素压入栈顶,使用 pop() 方法将栈顶元素弹出,并使用 top() 方法获取栈顶元素而不弹出它。
相关问题
void MyWindow::onButtomCliked(int id) { qDebug() << "ID:" << id; QString text = ui->buttonGroup->button(id)->text(); qDebug() << "text:" << text; if(text == "C") { ui->lineEdit->clear(); express.clear(); }else if(text == "←") { express.chop(1); }else if(text == "=") { //计算表达式 QStack<QString> stack; QQueue<QString> queue; //遍历计算表达式 for(auto ch: express) { if(ch.isDigit()) { stack.push_back(ch); }else { while(!stack.empty()) { if((ch == 'x' || ch == '/') && (stack.top() == '+' || stack.top() == '-')) { break; } else { QString s; s = stack.pop(); queue.enqueue(s); } } stack.push_back(ch); } } while(!queue.empty()) { QString op = queue.dequeue(); if(op == '+' ||op == '-' ||op == 'x' ||op == '/') { QString s1,s2; int a1,a2; s1 = queue.dequeue(); s2 = queue.dequeue(); bool ok; a1 = s1.toInt(&ok,16); a2 = s2.toInt(&ok,16); int sum = 0; if(op == '+') { sum = a1 + a2; }else if(op == '-') { sum = a1 - a2; }else if(op == 'x') { sum = a1 * a2; }else { sum = a1 / a2; } QString str = QString::number(sum, 16); stack.push_back(str); } else { stack.push_back(op); } } QString res = stack.pop(); //QString res = "100"; //计算结果 express += "="; express += res; }else { //限制错误输出 express += text; } ui->lineEdit->setText(express); }
这是一个计算器的槽函数,当按钮被点击时,会执行该函数。函数接受一个参数 id,用于标识按钮的身份。根据按钮的不同,函数执行不同的操作。如果是清除按钮,会清空文本框和表达式;如果是删除按钮,会删除表达式末尾的一个字符;如果是等号按钮,会计算表达式并将结果显示在文本框中;否则,会将按钮的文本添加到表达式中。函数的主要逻辑是使用栈和队列来计算表达式,遍历表达式字符串中的每一个字符,并根据运算符的优先级将数字和运算符分别放入栈和队列中,最后再从队列中取出运算符和数字进行计算,将结果再次放入栈中。最后,从栈中取出计算结果并显示在文本框中。
qt中QStack的swap怎么用
在 Qt 中,QStack 是一个基于堆栈的容器类,提供了 push、pop、top 和 isEmpty 等常用函数。
要使用 QStack 的 swap 函数,需要将两个 QStack 对象作为参数传递给 swap 函数。swap 函数将交换这两个对象中的元素。
下面是一个示例代码:
```cpp
QStack<int> stack1;
stack1.push(1);
stack1.push(2);
stack1.push(3);
QStack<int> stack2;
stack2.push(4);
stack2.push(5);
stack2.push(6);
qDebug() << "Before swap:";
qDebug() << "stack1: " << stack1;
qDebug() << "stack2: " << stack2;
stack1.swap(stack2);
qDebug() << "After swap:";
qDebug() << "stack1: " << stack1;
qDebug() << "stack2: " << stack2;
```
这段代码会创建两个 QStack 对象,分别存储了不同的整数。然后使用 swap 函数交换了这两个 QStack 对象,最后输出交换后的结果。
阅读全文