尝试cout地图值时程序崩溃

时间:2014-01-18 16:00:25

标签: c++ debugging map

我正在尝试插入配对值< float,string>进入我的地图类

#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
#include <set>
#include <set>
#include <iostream>
#include <map>
using namespace std;



int main()
{

    map<float,string> output;

    output.insert(pair<float,string> ( 200.5, "foo" ));
    output.insert(pair<float,string> ( 100.5, "batr" ));

     map<float,string>::iterator mps1;
     map<float,string>::iterator mps2;

       mps1 = output.begin();
       mps2 = output.end();

       while (mps1 != mps2)
       {
           cout<<mps2->first
               <<" "
               <<mps2->second; //crashes here

           mps1++;

       }

     system("PAUSE");
}

使用调试器时,它会在下一行

时崩溃
<<mps2->second;

有人可以向我解释,谢谢

1 个答案:

答案 0 :(得分:4)

您应该访问mps1,而不是mps2

mps1是你递增使用的迭代器; mps2是“结束迭代器”,你不能解除引用。

这是一个非常基本的拼写错误/逻辑错误。