关于c++中map插入元素的问题
1.为何map<int,int>和map<string,int> 有不同的操作呢?
#include <string>
#include <iostream>
#include <list>
#include <vector>
#include <set>
#include <map>
using namespace std;
int main()
{
multimap<int,int> m = {{1,1},{2,2}};
pair<int,int> p{2,3};
//下面的一句代码想给m增加一个元素,这个元素关键字是2值是3
m[p.first] = p.second;return 0;
}
编译的时候引发错误 m[p.first] = p.second; 就这句,说明不能通过map_object[key] = value 的方法增加元素吗?map_objece是一个map类型的对象,key是关键字,value是一个值,但是看下面的一个例子
#include <iostream>
#include <list>
#include <vector>
#include <set>
#include <map>
using namespace std;
int main()
{
multimap<int,int> m = {{1,1},{2,2}};
pair<int,int> p{2,3};
//下面这句就错了,g++给出的错误提示是:no match for ‘operator[]’ (operand types are //‘std::multimap<int, int>’ and ‘int’)
//我的理解就是:multimap<int,int> and int 没有匹配的操作符号[]
//map<int,int>没有匹配的操作[],难道关键字其他类型就可以?
m[1] = 2; map<int,int> m2;
//下面这句同样错误
m2[1] = 2;
map<string,int> m3;
//下面就可以呀,可以按照 map_object[key] = value 的格式赋值(事实上,这是python字典赋值方式)
m3["name1"] = 2;
cout << m3["name1"] << endl;return 0;}
结论,map<type1,type2> ,用python3方式赋值的时候,type1是string的时候是可以的,是不是只要关键字不是int就可以?
#include <string>
#include <iostream>
#include <list>
#include <vector>
#include <set>
#include <map>
using namespace std;
void print_(map<char,int>& );
int main()
{
multimap<int,int> m = {{1,1},{2,2}};
pair<int,int> p{2,3};
map<char,int> cm;
//下面这句话就是可以的,也就是关键字类型事char是可以的
cm['a'] = 1234;
print_(cm);return 0;}
void print_(map<char,int> & m)
{
for(auto i : m){cout << "key :" << i.first << endl;cout << "value:" << i.second << endl;}}
~
下面把map的关键字还是char类型,值类型换成string,还是可以的,
#include <string>
#include <iostream>
#include <list>
#include <vector>
#include <set>
#include <map>
using namespace std;
void print_(map<char,string>& );
int main()
{
multimap<int,int> m = {{1,1},{2,2}};
pair<int,int> p{2,3};
map<char,string> cm;
cm['a'] = "1234";
print_(cm);return 0;
}
void print_(map<char,string> & m)
{
for(auto i : m){cout << "key :" << i.first << endl;cout << "value:" << i.second << endl;}}
~
琢磨着,估计关键字类型不是int类型(或者unsigned,size_t那些整形)就可以了,下面试试把关键字改成float看可以不:
#include <string>
#include <iostream>
#include <list>
#include <vector>
#include <set>
#include <map>
using namespace std;
void print_(map<float,string>& );
int main()
{
multimap<int,int> m = {{1,1},{2,2}};
pair<int,int> p{2,3};
map<float,string> cm;
cm[1.234] = "1234";
cm[2.323] = "434";
print_(cm);return 0;}
void print_(map<float,string> & m)
{
for(auto i : m){cout << "key :" << i.first << endl;cout << "value:" << i.second << endl;}
}
运行结果如下:
key :1.234
value:1234
key :2.323
value:434
只要key不是int或者是其它整形,都是可以通过map[key] = value;来赋值
关于c++中map插入元素的问题相关推荐
- 使用原生JS在Vue实例中动态插入元素
说明:项目需要,这里使用到的是Ant Design框架中的modal模态框组件. 完整代码: 经供参考,根据自己的业务需求适当修改!
- java的map键值类型是否固定_Java中Map根据键值(key)或者值(value)进行排序实现
我们都知道,java中的Map结构是key->value键值对存储的,而且根据Map的特性,同一个Map中 不存在两个Key相同的元素,而value不存在这个限制.换句话说,在同一个Map中Ke ...
- LinkedList插入元素一定比ArrayList快吗
在选择数据结构的时候,我们通常会考虑每种数据结构不同操作的时间复杂度,以及使用场景两个因素. 对于数组,随机元素访问的时间复杂度是 O(1),元素插入操作是 O(n): 对于链表,随机元素访问的时间复 ...
- STL中map/vector的删除元素操作
在我们使用C++中的STL的时候,可以使用迭代器iterator进行遍历,但是当我们通过iterator对vector和map删除元素的时候,要格外的小心,往往操作不当,导致iterator失效,后果 ...
- java中map怎么遍历,Java中怎么遍历Map的所有的元素
Java中怎样遍历Map的所有的元素 JDK1.4中 view plaincopy to clipboardprint? Map map = new HashMap(); Iterator it = ...
- boost::log模块测试检查插入不会使容器中的现有元素无效
boost::log模块测试检查插入不会使容器中的现有元素无效 实现功能 C++实现代码 实现功能 boost::log模块测试检查插入不会使容器中的现有元素无效 C++实现代码 #define BO ...
- java向数组中插入元素
/*** * @Title: test_insert_array* @Description: 该方法的主要作用:像数组中插入元素* @param 设定文件 * @return 返回类型:void * ...
- 在循环递增一次的数组中插入元素
文章目录 题目 思路 如何建立左右区间? 如何查找最高点? 那我们怎么判断 `num` 到底处于什么样的位置呢? 如何确定插入位置? 插入元素 代码 题目 给一个只循环递增一次的数组 res,res ...
- c#查找列表指定元素的索引_在集合的指定索引处插入元素 在C#中
c#查找列表指定元素的索引 Given a Collection<T> of Integer and we have to insert an element at given index ...
最新文章
- 年终总结,程序员票选最喜欢的编程语言花落谁家?
- IDEA 打可执行jar包(maven项目)
- Flex 布局实例教程
- 林草资源调查监测数据下载
- java byte 相等比较_Java字节码跟真正汇编的比较
- stata 空间杜宾模型_空间面板数据模型及Stata实现
- mysql创建视图的sql语句_MySQL数据库创建视图
- 下载Cisco Packet Tracer 模拟器 含汉化教程
- 单节2A锂电池充电芯片方案,PD和QC快充充电器5-12V输入
- 【游记】CSP2021-试手记
- Easyx图形库小游戏---迷宫
- 科创板拟上市企业申联生物和传音控股已提交注册
- 超图申请试用以及激活
- 台式计算机硬件组成主机,台式电脑主机的硬件组成部分简介
- docker内运行的grafana重置登录密码
- 网络安全加固的必要性
- vs2015 无法启动程序 系统找不到指定的文件
- Apache服务部署静态网站——个人用户主页
- qq聊天记录备份与恢复
- 抓取服务器作业文档不存在,易飞ERP客户问题集.doc
热门文章
- C#[抽象类,接口]
- SQL中条件和比较关键字Case的使用方法(case的结果就是得到了一个值)
- String案例 获取一个字符串在另一个字符串中出现的次数(两种方法)
- java io内存泄露_java内存泄露和OutOfMemory
- iOS之深入解析bitcode的功能与应用
- Hi Azure. 从零开始打造一个语音机器人,跟你的电脑聊聊天。
- Linux(树莓派)安装 python-opencv
- Jenkins 程序目录
- 【Qt】Qt资源应用--菜单图标
- 【Qt】Qt5.12编译MySQl5.7驱动(亲自测试成功)