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插入元素的问题相关推荐

  1. 使用原生JS在Vue实例中动态插入元素

    说明:项目需要,这里使用到的是Ant Design框架中的modal模态框组件. 完整代码: 经供参考,根据自己的业务需求适当修改!

  2. java的map键值类型是否固定_Java中Map根据键值(key)或者值(value)进行排序实现

    我们都知道,java中的Map结构是key->value键值对存储的,而且根据Map的特性,同一个Map中 不存在两个Key相同的元素,而value不存在这个限制.换句话说,在同一个Map中Ke ...

  3. LinkedList插入元素一定比ArrayList快吗

    在选择数据结构的时候,我们通常会考虑每种数据结构不同操作的时间复杂度,以及使用场景两个因素. 对于数组,随机元素访问的时间复杂度是 O(1),元素插入操作是 O(n): 对于链表,随机元素访问的时间复 ...

  4. STL中map/vector的删除元素操作

    在我们使用C++中的STL的时候,可以使用迭代器iterator进行遍历,但是当我们通过iterator对vector和map删除元素的时候,要格外的小心,往往操作不当,导致iterator失效,后果 ...

  5. java中map怎么遍历,Java中怎么遍历Map的所有的元素

    Java中怎样遍历Map的所有的元素 JDK1.4中 view plaincopy to clipboardprint? Map map = new HashMap(); Iterator it = ...

  6. boost::log模块测试检查插入不会使容器中的现有元素无效

    boost::log模块测试检查插入不会使容器中的现有元素无效 实现功能 C++实现代码 实现功能 boost::log模块测试检查插入不会使容器中的现有元素无效 C++实现代码 #define BO ...

  7. java向数组中插入元素

    /*** * @Title: test_insert_array* @Description: 该方法的主要作用:像数组中插入元素* @param 设定文件 * @return 返回类型:void * ...

  8. 在循环递增一次的数组中插入元素

    文章目录 题目 思路 如何建立左右区间? 如何查找最高点? 那我们怎么判断 `num` 到底处于什么样的位置呢? 如何确定插入位置? 插入元素 代码 题目 给一个只循环递增一次的数组 res,res ...

  9. c#查找列表指定元素的索引_在集合的指定索引处插入元素 在C#中

    c#查找列表指定元素的索引 Given a Collection<T> of Integer and we have to insert an element at given index ...

最新文章

  1. 年终总结,程序员票选最喜欢的编程语言花落谁家?
  2. IDEA 打可执行jar包(maven项目)
  3. Flex 布局实例教程
  4. 林草资源调查监测数据下载
  5. java byte 相等比较_Java字节码跟真正汇编的比较
  6. stata 空间杜宾模型_空间面板数据模型及Stata实现
  7. mysql创建视图的sql语句_MySQL数据库创建视图
  8. 下载Cisco Packet Tracer 模拟器 含汉化教程
  9. 单节2A锂电池充电芯片方案,PD和QC快充充电器5-12V输入
  10. 【游记】CSP2021-试手记
  11. Easyx图形库小游戏---迷宫
  12. 科创板拟上市企业申联生物和传音控股已提交注册
  13. 超图申请试用以及激活
  14. 台式计算机硬件组成主机,台式电脑主机的硬件组成部分简介
  15. docker内运行的grafana重置登录密码
  16. 网络安全加固的必要性
  17. vs2015 无法启动程序 系统找不到指定的文件
  18. Apache服务部署静态网站——个人用户主页
  19. qq聊天记录备份与恢复
  20. 抓取服务器作业文档不存在,易飞ERP客户问题集.doc

热门文章

  1. C#[抽象类,接口]
  2. SQL中条件和比较关键字Case的使用方法(case的结果就是得到了一个值)
  3. String案例 获取一个字符串在另一个字符串中出现的次数(两种方法)
  4. java io内存泄露_java内存泄露和OutOfMemory
  5. iOS之深入解析bitcode的功能与应用
  6. Hi Azure. 从零开始打造一个语音机器人,跟你的电脑聊聊天。
  7. Linux(树莓派)安装 python-opencv
  8. Jenkins 程序目录
  9. 【Qt】Qt资源应用--菜单图标
  10. 【Qt】Qt5.12编译MySQl5.7驱动(亲自测试成功)