程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++中map容器的使用說明

C++中map容器的使用說明

編輯:C++入門知識

C++中map容器的使用說明


C++中map容器提供一個鍵值對容器,map與multimap差別僅僅在於multiple允許一個鍵對應多個值.

一.map的說明

 

1.頭文件

#include

 

2.定義方法

(1)map m;

(2)typedef map M;

M m;

 

3.插入數據

(1)m['a'] = 1

(2)m.insert(map::value_type(b,2));

(3)m.insert(pair(c,3));

(4)m.insert(make_pair(d,4));

 

4.查找數據和修改數據

(1)int i = m[a];

m[a] = i;

(2)m::iterator m_iter;

m.find(b);

int j = m_iter->second;

m_iter->second = j;

!!!注意!!! 鍵本身是不能被修改的,除非刪除.

 

5.刪除數據

(1)m.erase(m_iter);

(2)m.erase(c);

!!!注意!!! 第一種情況在迭代期間是不能被刪除的

 

6 迭代數據
for (m_iter=m.begin(); m_iter!=m.end(); ++m_iter)

{

 

}


7 其它方法
m.size() 返回元素數目
m.empty() 判斷是否為空
m.clear() 清空所有元素
可以直接進行賦值和比較:=, >, >=, <, <=, != 等等

 

二map的舉例

 

要求: 將mymap中itemstruct的a大於100的項刪除  
struct itemstruct 
{ 
     int a; 
     char b[20]; 
}; 
map mymap;

 

 

代碼1:
#include  
#include  
#include 
using namespace std; 

typedef struct itemstruct 
{ 
    int a; 
    char b[20]; 
}itemS; 

itemS s[4] = {{102,what}, 
             {33,   hello}, 
             {198,world}, 
             {45,   c++} 
             };; 

int main() 
{ 
    map  mymap; 
    string str[4] = {1st,2nd,3rd,4th}; 
    for(int i = 0; i<4; i++) 
    { 
        mymap.insert(make_pair(str[i], s[i])); 
    } 
            
    map::iterator it; 
    for(it=mymap.begin(); it!=mymap.end(); it++) 
    { 
        if(it->second.a >100)
        { 
        	i=mymap.erase(it);   //----->正確
    		mymap.erase(it);     //----->it失效..
        }
    }
    //first是Key, second是value;
    for(it = mymap.begin();  it!=mymap.end(); it++) 
    { 
        cout<first<< <second.a<< <second.b<


代碼2:

 

#include 
#include 
#include 
#include 
#include 
using namespace std; 
struct itemstruct 
{ 
    int   a; 
    char   b[20]; 
    itemstruct(int   t,char*str) 
    { 
    	a=t; 
    	strcpy(b,str); 
    } 
}; 

int main() 
{ 
  
  mapmymap; 
  mymap.insert(make_pair(a,itemstruct(10,hanzhou))); 
  mymap.insert(make_pair(ab,itemstruct(20,fuzhou))); 
  mymap.insert(make_pair(abc,itemstruct(30,zhengzhou))); 
  mymap.insert(make_pair(abcd,itemstruct(200,wuhan))); 
  mymap.insert(make_pair(abcde,itemstruct(150,kunming))); 
  mymap.insert(make_pair(abcdef,itemstruct(50,xiamen))); 
  map::iterator   it=mymap.begin(); 

  while(it!=mymap.end()) 
  { 
  	if((it->second).a>100)
  		mymap.erase(it++); 
  	else   
  		it++; 
  }

  it=mymap.begin(); 

  while(it!=mymap.end()) 
  { 
  	cout<first<<   <<(it->second).a<<   <<(it->second).b<

 

 

代碼3:

 

for(map::iterator   i   =   mymap.begin();   i   !=   mymap.end();) 
{ 
    if(i->second.a   >   100) 
       i   =   mymap.erase(i); 
    else 
       ++i; 
} 


 


 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved