map/ multimap容器应用

文章介绍了在C++中如何使用头文件和命名空间,特别是关于map容器的运用,包括三种遍历map的方法:迭代器、rangefor循环以及C++17的新特性。同时,列举了map的主要成员方法,并对比了map与multimap的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.使用时添加头文件和命名空间

#include <string>
#include <vector>
#include <map>        // 引入头文件

using std::string;    
using std::vector;
using std::multimap;  // 引入命名空间
using std::pair;      // 例:mUidlist.insert(pair<int, string>(nUid, vData[0])); 需指明类型
using std::make_pair; // 例:mUidlist.insert(make_pair(nUid, vData[0])); 无需指明键值对的类型

2.三种遍历方法

#include <iostream>
#include <map>
using namespace std;

int main() {
    map<string, int> mp;
    mp["test1"] = 20;
    mp["test2"] = 18;
    mp["test3"] = 30;

    // 方式一、迭代器
    cout << "方式一、迭代器" << endl;
    for (auto it = mp.begin(); it != mp.end(); it++) {
        cout << it -> first << " " << it -> second << endl;
    }

    // 方式二、range for C++ 11版本及以上
    cout << "\n方法二、 range for" << endl;
    for (auto it : mp) {
        cout << it.first << " " << it.second << endl;
    }

    // 方法三、 C++ 17版本及以上
    cout << "\n方法三" << endl;
    for (auto [key, val] : mp) {
        cout << key  << " " << val << endl;
    }
    
    return 0;
}

3.map容器包含的成员方法

begin()        返回指向map头部的迭代器
clear()        删除所有元素
 count()返回指定元素出现的次数, (帮助评论区理解: 因为key值不会重复,所以只能是1 or 0)
 empty()        如果map为空则返回true
 end()          返回指向map末尾的迭代器
equal_range()  返回特殊条目的迭代器对
 erase()        删除一个元素

 find()        

 查找一个元素    

get_allocator()

返回map的配置器   

 insert()        

 插入元素 

 key_comp()    

 返回比较元素

lower_bound()  

返回键值>=给定元素的第一个位置   

 max_size()    

 返回可以容纳的最大元素个数     

rbegin()        

返回一个指向map尾部的逆向迭代器   

 rend()          

返回一个指向map头部的逆向迭代器   

 size()        

 返回map中元素的个数   

 swap()            

 交换两个map 

upper_bound()    

返回键值>给定元素的第一个位置
 value_comp()    返回比较元素value的函数

        

    ps:map和multimap区别

  • map不允许容器中有重复key值元素
  • multimap允许容器中有重复key值元素
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值