51Testing软件测试论坛

标题: 请教C++高手们,可以给小女子解释一下map使用实例的代码吗 [打印本页]

作者: zhangcaiyun_86    时间: 2013-3-11 17:25
标题: 请教C++高手们,可以给小女子解释一下map使用实例的代码吗
本帖最后由 zhangcaiyun_86 于 2013-3-11 17:28 编辑

#include "stdafx.h"
#include <map>
#include <string>
#include <iostream>
using namespace std;
int main()
{
       map<int, string> mapstudent;
pair<map<int, string>::iterator, bool> Insert_Pair;

       Insert_Pair = mapstudent.insert(pair<int, string>(1, "student_one"));
       if(Insert_Pair.second == true)
       {
              cout<<"Insert Successfully"<<endl;
       }
       else
       {
              cout<<"insert failure"<<endl;
       }

           Insert_Pair = mapstudent.insert(pair<int, string>(1, "student_two"));
       if(Insert_Pair.second == true)
       {
              cout<<"Insert Successfully"<<endl;
       }
       else
       {
              cout<<"Insert Failure"<<endl;
       }
       map<int, string>::iterator iter;
       for(iter = mapstudent.begin(); iter != mapstudent.end(); iter++)
{
       cout<<iter->first<<"   "<<iter->second<<endl;
}
           cin.get();
}

运行结果:
Insert Successfully
Insert Failure
1 student_one ???为啥是这个运行结果捏
(单行都注释一下,不胜感激)
作者: 张亚洲    时间: 2013-7-13 16:24
小女子!哈哈! 可惜不会啊!
作者: yun@123    时间: 2013-8-5 15:49
本帖最后由 yun@123 于 2013-8-5 15:52 编辑

#include "stdafx.h"
#include <map>
#include <string>
#include <iostream>
using namespace std;


int _tmain(int argc, _TCHAR* argv[])
{
        map<int, string> mapstudent;
        pair<map<int, string>::iterator, bool> Insert_Pair;

        Insert_Pair = mapstudent.insert(pair<int, string>(1, "student_one"));//向mapstudent和Insert_Pair的key=1赋值,赋值成功Insert_Pair.second为true,否则为false
        if(Insert_Pair.second == true)
        {
                cout<<"Insert Successfully"<<endl;
        }
        else
        {
                cout<<"insert failure"<<endl;
        }

        Insert_Pair = mapstudent.insert(pair<int, string>(1, "student_two"));//因为上面已经对key=1进行过赋值,故再次使用此方法无法覆盖原来的,即赋值失败返回false,若想要覆盖原来的可以通过operator[]进行赋值,即mapstudent[1]="student_two",当然也可能是由于你手误将mapstudent.insert(pair<int, string>(1, "student_two"));里面写成1,改成其他值就可以了
        if(Insert_Pair.second == true)
        {
                cout<<"Insert Successfully"<<endl;
        }
        else
        {
                cout<<"Insert Failure"<<endl;
        }

        map<int, string>::iterator iter;
        for(iter = mapstudent.begin(); iter != mapstudent.end(); iter++)//输出mapstudent中所有元素的值
        {
                cout<<iter->first<<"   "<<iter->second<<endl;
        }
        cin.get();
        return 0;
}
即你的这个代码第一次赋值是成功的,返回true,第二次赋值失败,返回false,故输出结果就是你说的那种喽
作者: 一田艾    时间: 2013-8-12 20:43
嘿嘿,回个贴表明我来过。
作者: 一田艾    时间: 2013-8-12 21:46
参考参考,我认为很好,大家说说




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2