不减狂娇 2016-09-25 02:58 采纳率: 100%
浏览 1260
已采纳

string的迭代器解引用不是不改变迭代器本身指向的吗?怎么回事

string的迭代器解引用不是不改变迭代器本身指向的吗?怎么回事
贴上源码

 #include <iostream>
#include <string>
using namespace std;
int main(void) {
    int N;
    cin >> N;
    for(int i=1;i<=N;i++){
        string p;
        cin >> p;
        for(string::iterator j=p.begin();j!=p.end();j++){
            if(*j == ']' || *j == ')'){
                if(j == p.begin()) break;
                if(*(j-1) == '(' && *j == ']') break;
                if(*(j-1) == '[' && *j == ')') break;
                for(string::iterator k=j-1;k!=p.begin();){
                    if((*j == ']' && *k == '[') || (*j == ')' && *k == '(')){
                        p.erase(j);
                        p.erase(k);
                        break;
                    }else k--;
                }
            }else continue;
        }
        if(p.empty()) cout << "Yes" << endl;
        else cout << "No:" << p << endl;
    }
}

下面是调试截图
调试截图
为什么我解引用完迭代器指向会变表情
还有,我的字符串第一个字符明明是(怎么变成\0了

  • 写回答

1条回答

  • jimmy_carter_714 2016-09-25 04:56
    关注

    第一次p j 值为'\0'是因为那一句初始化还没有执行。还有p.erase(j)会导致迭代器j失效,后面的程序会崩溃一旦执行++操作会崩溃的

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 一道python难题2
  • ¥15 一道python难题
  • ¥15 用matlab 设计一个不动点迭代法求解非线性方程组的代码
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试
  • ¥20 问题请教!vue项目关于Nginx配置nonce安全策略的问题
  • ¥15 教务系统账号被盗号如何追溯设备