1. 程式人生 > >C++ map 常用操作的使用方式

C++ map 常用操作的使用方式

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
#include <map>
using namespace std;
map<int,int>mapp;
int main()
{
    //判斷map是否為空
    if(mapp.empty())
        printf("mapp為空\n");
    //map的插入 有兩種方法
    mapp.insert(pair<int,int>(1,10));
    mapp.insert(pair<int,int>(5,50));
    mapp.insert(pair<int,int>(7,70));
    mapp.insert(pair<int,int>(3,30));
    mapp.insert(pair<int,int>(4,40));
    mapp[6]=60;
    //map的查詢功能 find()函式返回一個迭代器指向鍵值為key的元素,如果沒有找到就返回指向map尾部的迭代器
    if(mapp.find(6)==mapp.end())
        printf("沒有找到元素\n");
    else
        printf("元素的value值為%d\n",mapp[6]);
    //map的刪除操作
    map<int,int>::iterator it;
    for (int i=0;i<2;i++)
    {
        int n=6;
        it=mapp.find(n);
        if(it==mapp.end())
            printf("沒有找到元素\n");
        else
        {
            printf("%d\n",mapp[n]);
            mapp.erase(it);
        }
    }
    //map的遍歷
    for (it=mapp.begin();it!=mapp.end();it++)
           printf("%d %d\n",it->first,it->second);


    //count,返回的是被查詢元素的個數。如果有,返回1;否則,返回0。
    map<int,int>mapp1;
    for (int i=0;i<10;i++)
    {
        mapp1.insert(pair<int,int>(i%2,i));
    }
    for (int i=0;i<3;i++)
        if(mapp1.count(i))
            printf("存在%d呢\n",i);
        else
            printf("不存在%d呢\n",i);
    //size,返回map中元素的個數
         printf("mapp1中含有%d個元素呢\n",mapp1.size());
    //swap ,兩個map容器之間交換
      map<int,int>m1,m2;
      for (int i=0;i<10;i++)
      {
          if(i%2)
          {
              m1[i]=i;
          }
          else
          {
              m2[i]=i;
          }
      }
      map<int,int>::iterator itt;
      printf("交換之前:\n");
      printf("m1中的:\n");
      for (itt=m1.begin();itt!=m1.end();itt++)
      {
          printf("%d %d\n",itt->first,itt->second);
      }
      printf("m2中的:\n");
      for (itt=m2.begin();itt!=m2.end();itt++)
      {
          printf("%d %d\n",itt->first,itt->second);
      }
      swap(m1,m2);
       printf("交換之後:\n");
      printf("m1中的:\n");
      for (itt=m1.begin();itt!=m1.end();itt++)
      {
          printf("%d %d\n",itt->first,itt->second);
      }
      printf("m2中的:\n");
      for (itt=m2.begin();itt!=m2.end();itt++)
      {
          printf("%d %d\n",itt->first,itt->second);
      }
    return 0;
}