1. 程式人生 > >C++標準庫map型別

C++標準庫map型別

map是一種關聯容器,所謂的關聯容器是指支援高效的關鍵字查詢和訪問。map中的元素為一些關鍵字-值(key-value)對,關鍵字起到索引值的作用,且map中的元素是按照關鍵字升序排序的。還有map是個對映,所以它的關鍵字和值是一一對應的。接下來就為大家介紹map的用法

1.map的定義

我們可以用如下方法定義或初始化map

//空容器
map<int,string> m1;
//值初始化map
map<string,string> m2 = {{"001","shreck"},
{"002","leo"}
}; 

2.為map新增元素

我們可以用如下方法為map新增元素

map<string,string> m;

//方法一
m.insert(pair<string,string>("001",""shreck));
//方法二
m.insert(map<string,string>::value_type("002",""leo));
//方法三
m[2] = "lewin";

3.map中查詢某個元素

我們使用find函式來查詢map中的元素,若查詢失敗則返回尾部迭代器
find函式具體用法例項如下

#include<iostream>
#include<map>

using namespace
std; int main(int argc,char **argv) { map<int,string> m; m[0] = "shreck"; m[1] = "leo"; //使用find函式查詢leo auto it = m.find(1); if(it == m.end()) { cout<<"未找到該元素"<<endl; } else { cout<<"該元素為:"<<it->second<<endl; } return
0; }

4.map的刪除

map的刪除方法有三種
(1)傳遞給erase一個迭代器
(2)傳遞給erase一個迭代器對
(3)傳遞給erase一個key_value
map的刪除方法如下例項

#include<iostream>
#include<map>

using namespace std;

//遍歷函式
void print(const map<int,string> &m)
{
    for(auto x:m)
    {
        cout<<x.second<<" ";
    }
    cout<<endl;
}

int main(int argc,char **argv)
{
    map<int,string> m;

    m[0] = "shreck";
    m[1] = "leo";
    m[2] = "lewin";
    m[3] = "lyh";
    m[4] = "lz";

    //傳一個迭代器
    auto it1 = m.find(2);
    m.erase(it1);
    print(m);

    //傳一對迭代器
    auto it2 = m.find(1);
    auto it3 = m.find(4);

    m.erase(it2,it3);
    print(m);

    //傳一個key_value
    m.erase(0);
    print(m);

    return 0;
}

5.map的一些基本操作函式

函式 作用
begin() 返回map的頭部迭代器
end() 返回指向map末尾的尾部迭代器
clear() 刪除容器中所有元素
empty() 判斷map是否為空
erase() 刪除map中的元素
find() 查詢一個元素
insert() 插入一個元素
size() 返回map中的元素個數
max_size() 返回map可容納的最大元素個數
lower_bound() 指向第一個關鍵字不小於K的元素
upper_bound() 指向第一個關鍵字大於k的元素