ZBLOG

// 使用栈模拟球的消除过程的函数 void eliminateBallsWithStack(std::string& row) { std::stack ballStack; for (char ball : row) { if (!ballStack.empty() && ballStack.top() == ball) { // 将当前球压入栈中前,先检查前两个元素是否和当前球相同 i

错误的原因是std::stack没有直接提供对内部容器的迭代器访问。解决方法是使用其他支持迭代器的数据结构,如std::deque来替换默认的内部容器类型。

以下是修改后的代码:

#include <string>
#include <stack>
#include <deque>

void eliminateBallsWithStack(std::string& row) {
    std::stack<char, std::deque<char>> ballStack;

    for (char ball : row) {
        if (!ballStack.empty() && ballStack.top() == ball) {
            if (ballStack.size() >= 2 && ballStack.top() == *(ballStack.begin() + 1)) {
                ballStack.pop();
                ballStack.pop();
                continue;
            }
        }

        ballStack.push(ball);
    }

    row.clear();
    while (!ballStack.empty()) {
        row = ballStack.top() + row;
        ballStack.pop();
    }
}

这样就可以解决该编译错误了。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=9722

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?