前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >STL之Map的运用

STL之Map的运用

作者头像
全栈程序员站长
发布2022-07-09 12:12:20
2740
发布2022-07-09 12:12:20
举报
文章被收录于专栏:全栈程序员必看

Map是c++的一个标准容器,她提供了非常好一对一的关系,在一些程序中建立一个map能够起到事半功倍的效果,总结了一些map基本简单有用的操作!

1. map最主要的构造函数;

map<string , int >mapstring; map<int ,string >mapint;

map<sring, char>mapstring; map< char ,string>mapchar;

map<char ,int>mapchar; map<int ,char >mapint;

2. map加入�数据;

map<int ,string> maplive;

1.maplive.insert(pair<int,string>(102,”aclive”));

2.maplive.insert(map<int,string>::value_type(321,”hai”));

3, maplive[112]=”April”;//map中最简单最经常使用的插入加入�!

3,map中元素的查找:

find()函数返回一个迭代器指向键值为key的元素,假设没找到就返回指向map尾部的迭代器。

map<int ,string >::iterator l_it;;

l_it=maplive.find(112);

if(l_it==maplive.end())

cout<<“we do not find 112″<<endl;

else cout<<“wo find 112″<<endl;

4,map中元素的删除:

假设删除112;

map<int ,string >::iterator l_it;;

l_it=maplive.find(112);

if(l_it==maplive.end())

cout<<“we do not find 112″<<endl;

else maplive.erase(l_it); //delete 112;

5,map中 swap的使用方法:

Map中的swap不是一个容器中的元素交换,而是两个容器交换;

For example:

#include <map>

#include <iostream>

using namespace std;

int main( )

{

map <int, int> m1, m2, m3;

map <int, int>::iterator m1_Iter;

m1.insert ( pair <int, int> ( 1, 10 ) );

m1.insert ( pair <int, int> ( 2, 20 ) );

m1.insert ( pair <int, int> ( 3, 30 ) );

m2.insert ( pair <int, int> ( 10, 100 ) );

m2.insert ( pair <int, int> ( 20, 200 ) );

m3.insert ( pair <int, int> ( 30, 300 ) );

cout << “The original map m1 is:”;

for ( m1_Iter = m1.begin( ); m1_Iter != m1.end( ); m1_Iter++ )

cout << ” ” << m1_Iter->second;

cout << “.” << endl;

// This is the member function version of swap

//m2 is said to be the argument map; m1 the target map

m1.swap( m2 );

cout << “After swapping with m2, map m1 is:”;

for ( m1_Iter = m1.begin( ); m1_Iter != m1.end( ); m1_Iter++ )

cout << ” ” << m1_Iter -> second;

cout << “.” << endl;

cout << “After swapping with m2, map m2 is:”;

for ( m1_Iter = m2.begin( ); m1_Iter != m2.end( ); m1_Iter++ )

cout << ” ” << m1_Iter -> second;

cout << “.” << endl;

// This is the specialized template version of swap

swap( m1, m3 );

cout << “After swapping with m3, map m1 is:”;

for ( m1_Iter = m1.begin( ); m1_Iter != m1.end( ); m1_Iter++ )

cout << ” ” << m1_Iter -> second;

cout << “.” << endl;

}

6.map的sort问题:

Map中的元素是自己主动按key升序排序,所以不能对map用sort函数:

For example:

#include <map>

#include <iostream>

using namespace std;

int main( )

{

map <int, int> m1;

map <int, int>::iterator m1_Iter;

m1.insert ( pair <int, int> ( 1, 20 ) );

m1.insert ( pair <int, int> ( 4, 40 ) );

m1.insert ( pair <int, int> ( 3, 60 ) );

m1.insert ( pair <int, int> ( 2, 50 ) );

m1.insert ( pair <int, int> ( 6, 40 ) );

m1.insert ( pair <int, int> ( 7, 30 ) );

cout << “The original map m1 is:”<<endl;

for ( m1_Iter = m1.begin( ); m1_Iter != m1.end( ); m1_Iter++ )

cout << m1_Iter->first<<” “<<m1_Iter->second<<endl;

}

The original map m1 is:

1 20

2 50

3 60

4 40

6 40

7 30

请按随意键继续. . .

#include <iostream>

#include <string>

#include <map>

using namespace std;

int main()

{

char str[50];

int count=0;

map <string,int> counter;

map <string,int> ::iterator it;

while(gets(str)!=NULL)

{

counter[str]++;

count++;

}

for(it=counter.begin();it!=counter.end();it++)

{

cout<<it->first<<” “<<it->second<<endl;

}

return 0;

}

7, map的基本操作函数:

C++ Maps是一种关联式容器,包括“keyword/值”对

begin() 返回指向map头部的迭代器

clear() 删除全部元素

count() 返回指定元素出现的次数

empty() 假设map为空则返回true

end() 返回指向map末尾的迭代器

equal_range() 返回特殊条目的迭代器对

erase() 删除一个元素

find() 查找一个元素

get_allocator() 返回map的配置器

insert() 插入元素

key_comp() 返回比較元素key的函数

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

max_size() 返回能够容纳的最大元素个数

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

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

size() 返回map中元素的个数

swap() 交换两个map

upper_bound() 返回键值>给定元素的第一个位置

value_comp() 返回比較元素value的函数

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/119065.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021年11月,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档