51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 2929|回复: 4
打印 上一主题 下一主题

请教C++高手们,可以给小女子解释一下map使用实例的代码吗

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2013-3-11 17:25:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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 ???为啥是这个运行结果捏
(单行都注释一下,不胜感激)
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

  • TA的每日心情
    慵懒
    2017-7-9 10:38
  • 签到天数: 13 天

    连续签到: 1 天

    [LV.3]测试连长

    2#
    发表于 2013-7-13 16:24:19 | 只看该作者
    小女子!哈哈! 可惜不会啊!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3#
    发表于 2013-8-5 15:49:35 | 只看该作者
    本帖最后由 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,故输出结果就是你说的那种喽
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4#
    发表于 2013-8-12 20:43:42 | 只看该作者
    嘿嘿,回个贴表明我来过。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5#
    发表于 2013-8-12 21:46:30 | 只看该作者
    参考参考,我认为很好,大家说说
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-4-29 00:44 , Processed in 0.071408 second(s), 27 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表