向map添加元素:

因为map是不允许出现重复关键字的,所以如果重复插入键相同的元素后面的元素是不会插入成功的,下面是一个验证程序:

#include<iostream>
#include<algorithm>
#include<map>
#include<string>
using namespace std; int main()
{
map<string, int> mmap;
mmap.insert({ "wu",1 });
mmap.insert({ "xiao",1});
mmap.insert({ "wu",2 });
mmap.insert({ "xiao",8 });
for (auto it : mmap)
{
cout << it.first << " " << it.second << endl;
}
return 0;
}

  运行结果:

从运行结果我们可以知道,mmap的第三条个第四条插入语句时没法插入成功的,因为前面已经对相同键值做过了插入操作,后面就不会再插入了。

如果想要四条语句都插入成功可以考虑用multimap,multimap是可以存在重复键值的,下面是验证程序

#include<iostream>
#include<algorithm>
#include<map>
#include<string>
using namespace std; int main()
{
multimap<string, int> mmap;
mmap.insert({ "wu",1 });
mmap.insert({ "xiao",1});
mmap.insert({ "wu",2 });
mmap.insert({ "xiao",8 });
for (auto it : mmap)
{
cout << it.first << " " << it.second << endl;
}
return 0;
}

  运行结果:

map容器最常用的方法——kv对计数,如果插入的元素还没存在就插入,并给value赋值为1,如果插入的元素已经存在就不再插入而是给对应的键的值加1

#include<iostream>
#include<algorithm>
#include<map>
#include<string>
using namespace std; int main()
{
map<string, int> mmap;
string str;
while (cin >> str)
{
mmap[str]++;
}
for (auto it : mmap)
{
cout << it.first << " " << it.second << endl;
}
return 0;
}

  运行结果:

map的各种插入数据方式:

#include <iostream>
#include<string>
#include<vector>
#include<map>
using namespace std;
int main()
{ map<string, int>mmap;
mmap.insert(pair<string,int>("fsdfads", 43));//第一种插入方式
mmap.insert(map<string, int>::value_type("fsdf", 5));//第二种
mmap["fsdff"] = 3;//第三种
mmap.insert({ "fsd",4 });//第四种
for (auto it : mmap)
{
cout << it.first << " " << it.second << endl;
}
return 0;
}

  运行结果:

对map中的value进行排序
#include <iostream>
#include<string>
#include<vector>
#include<map>
#include<algorithm>
using namespace std; int main()
{ map<string, int>mmap;
vector<pair<string, int>>vec;
mmap.insert(pair<string,int>("fsdfads", 43));
mmap.insert(map<string, int>::value_type("fsdf", 5));
mmap["fsdff"] = 3;
mmap.insert({ "fsd",4 });
//将map的key和value以pair的形式装到vector中,对vector进行排序。
for (auto it = mmap.begin(); it != mmap.end(); it++)
{
vec.push_back(make_pair(it->first, it->second));
}
sort(vec.begin(), vec.end(), [](const pair<string, int>&x, const pair<string, int>&y) {return x.second < y.second; });
for (auto it : vec)
{
cout << it.first << " " << it.second << endl;
}
return 0;
}

  运行结果:

#include <iostream>
#include <cstdlib>
#include <map>
#include <vector>
#include <string>
#include <algorithm> using namespace std; int cmp(const pair<string, int>& x, const pair<string, int>& y)
{
return x.second > y.second;
} void sortMapByValue(map<string, int>& tMap, vector<pair<string, int> >& tVector)
{
for (map<string, int>::iterator curr = tMap.begin(); curr != tMap.end(); curr++)
tVector.push_back(make_pair(curr->first, curr->second)); sort(tVector.begin(), tVector.end(), cmp);
}
int main()
{
map<string, int> tMap;
string word;
while (cin >> word)
{
pair<map<string, int>::iterator, bool> ret = tMap.insert(make_pair(word, 1));
if (!ret.second)
++ret.first->second;
} vector<pair<string, int>> tVector;
sortMapByValue(tMap, tVector);
for (int i = 0; i < tVector.size(); i++)
cout << tVector[i].first << ": " << tVector[i].second << endl; system("pause");
return 0;
}

  

map的基本操作的更多相关文章

  1. C++ map的基本操作和使用

    原文地址:http://blog.sina.com.cn/s/blog_61533c9b0100fa7w.html Map是c++的一个标准容器,她提供了很好一对一的关系,在一些程序中建立一个map可 ...

  2. c++ map 的基本操作

    Map是c++的一个标准容器,她提供了很好一对一的关系,在一些程序中建立一个map可以起到事半功倍的效果,总结了一些map基本简单实用的操作!1. map最基本的构造函数:   map<stri ...

  3. C++中map的基本操作和使用;

    注:本文来自sina live 的博文 Map是c++的一个标准容器,她提供了很好一对一的关系,在一些程序中建立一个map可以起到事半功倍的效果,总结了一些map基本简单实用的操作!1. map最基本 ...

  4. 【转】 C++ map的基本操作和使用

    1.map简介 map是一类关联式容器.它的特点是增加和删除节点对迭代器的影响很小,除了那个操作节点,对其他的节点都没有什么影响.对于迭代器来说,可以修改实值,而不能修改key. 2.map的功能 自 ...

  5. 转载:C++ map的基本操作和使用

    声明:本文转自:http://www.cnblogs.com/hailexuexi/archive/2012/04/10/2440209.html 1.map简介 map是一类关联式容器.它的特点是增 ...

  6. map的基本操作函数及含义

    map的基本操作函数:      C++ Maps是一种关联式容器,包含“关键字/值”对      begin()          返回指向map头部的迭代器      clear()        ...

  7. cocos2d-x3.2中map的基本操作和使用

    在游戏开发中,我们有时候会用到map,而map的使用方法我简单给大家介绍一下.Map是c++的一个标准容器,她提供了非常好一对一的关系,在一些程序中建立一个map能够起到事半功倍的效果,总结了一些ma ...

  8. C++使用: C++中map的基本操作和用法

    在阅读SSD代码中发现作者使用了C++中的map方法,因此搜索该关联式容器的使用方法,在这里一并总结. 一.Map 簡介 Map是STL的一個容器,它提供一對一的hash. 第一個可以稱為關鍵字(ke ...

  9. 【转】C++ map的基本操作和使用

    1.map简介 map是一类关联式容器.它的特点是增加和删除节点对迭代器的影响较小,除了那个操作节点,对其它的节点都没有什么影响.对于迭代器来说,可以修改实值,而不能修改key. 2.map的功能 自 ...

  10. C++STL之map的基本操作

    STL中基本的关联式容器有map和set,它们都是以红黑树作为其底层的结构,具有非常高的查找.删除效率,内容会按照键值自动排序. 使用map的注意事项: 1.关联式容器的键值是不允许修改的,所以永远不 ...

随机推荐

  1. [NewLife.XCode]导入导出(实体对象百变魔君)

    NewLife.XCode是一个有10多年历史的开源数据中间件,支持nfx/netcore,由新生命团队(2002~2019)开发完成并维护至今,以下简称XCode. 整个系列教程会大量结合示例代码和 ...

  2. POJ 1094 (传递闭包 + 拓扑排序)

    题目链接: POJ 1094 题目大意:有 1 ~ N 个大写字母,且从 A 开始依次 N 个.再给你 M 个小于的关系,比如 A < B ,让你判断三种可能: 1.在第 i 个关系罗列之后,是 ...

  3. Appium 环境配置

    前言 Appium 作为移动端自动化测试工具在业界非常流行,特别是在当前移动互联网背景下,很多公司基于此框架来开展自动化测试.但 appium 的环境配置相对 selenium 来说复杂的多,让很多同 ...

  4. windowsServer ------ 安装IIS

    1.找到服务器管理器,点击添加角色,一步步执行 2.添加IIS 相关组件 勾选web服务器 下一步 将web服务iis 相关组件全部勾选,ftp 可不选 选择好后安装 等一会 关闭 可以查看到所安装角 ...

  5. RookeyFrame模块初始化

    上一篇讲了下线上创建模块,这一次讲下线下创建的模块如何初始化,实体类的创建可参考Demo中的客户主数据模块 首先讲下model类创建中的约定: 1.所有数据模型继承BaseEntity 2.需要绑定枚 ...

  6. 关于BFS+异或(C++)

    今天早上,我们做了场比赛,里面有一个题目是这样的.. 题目大意:        随着马场的繁荣,出现了越来越多的新马种.种族之间的沟通不畅严重影响了马场的和谐.这时,科学家发明了马语翻译机器人,正好可 ...

  7. .NET同一个页面父容器与子容器通信方案

    主界面: 关键主页面代码: <div id="EditDiv"> <iframe src="javascript:void(0)" id=&q ...

  8. Linux文件共享服务 FTP,NFS 和 Samba

    Linux 系统中,存储设主要有下面几种: DAS DAS 指 Direct Attached Storage,即直连附加存储,这种设备直接连接到计算机主板总线上,计算机将其识别为一个块设备,例如常见 ...

  9. Java网络编程 -- AIO异步网络编程

    AIO中的A即Asynchronous,AIO即异步IO.它是异步非阻塞的,客户端的I/O请求都是由OS先完成了再通知服务器应用去启动线程进行处理,一般我们的业务处理逻辑会变成一个回调函数,等待IO操 ...

  10. CSS3动画实践——简易牛顿摆

    最近在练习CSS3的关键帧动画(keyframes),于是做了一个简单的牛顿摆(听名字可能陌生,但你一定见过它): 先上代码(老版本IE可能存在兼容性问题): <!DOCTYPE html> ...