有点像地图中的自动增量
sort of autoincrement in map
本文关键字:地图 更新时间:2023-10-16
我有这段代码,我想实现的是,我想在c
上实际执行增量,当且仅当我实际插入到map中时,我研究了map的运算符[],但没有让它按我想要的那样工作。有什么简单的方法吗?或者我必须在插入所有内容之前搜索密钥,如果我什么都找不到,则递增并插入
#include <iostream>
#include <map>
#include <string>
int main ()
{
std::map<std::string,int> mymap;
int cnt = 0;
int h = -1;
mymap.insert(std::pair<std::string, int>("GBP", cnt++));
mymap.insert(std::pair<std::string, int>("EUR", cnt++));
mymap.insert(std::pair<std::string, int>("USD", cnt++));
mymap.insert(std::pair<std::string, int>("GBP", cnt++));
mymap.insert(std::pair<std::string, int>("GBP", cnt++));
mymap.insert(std::pair<std::string, int>("GBP", cnt++));
mymap.insert(std::pair<std::string, int>("CAD", cnt++));
mymap.insert(std::pair<std::string, int>("GBP", cnt++));
std::cout << cnt << std::endl;
for(const auto & v : mymap)
std::cout << v.first << " " << v.second << std::endl;
return 0;
}
结果将是gbp 0,eur 1,usd 2,cad 4(而不是cad 6)
insert
返回一个pair
,其first
是插入的元素的迭代器(此处不感兴趣),其CCD-5是bool
,该CCD_6"告诉"您该元素是否实际添加。
所以,你可以检查一下:
if(mymap.insert(std::pair<std::string, int>("GBP", cnt)).second)
cnt++;
if(mymap.insert(std::pair<std::string, int>("EUR", cnt)).second)
cnt++;
// and so on.
不过,在这种特殊情况下,您可以使用mymap.size()
作为计数:
mymap.insert(std::pair<std::string, int>("GBP", mymap.size()));
mymap.insert(std::pair<std::string, int>("EUR", mymap.size()));
// and so on.
因为每当插入元素时,映射的大小将增加1。
相关文章:
- 为什么不;名字在地图上是按顺序排列的吗
- 基于多个条件处理地图中的所有元素
- 在C++中将矢量转换为嵌套地图
- 替换基于地图的所有引用
- 如何区分地图中的 0 和 false?
- 地图计数确实很重要,或者只是检查是否存在
- 如何从地图中删除矢量对象
- 是否有任何C++功能可以对地图进行排序?
- 如何使用 std::variant 打印地图键/值?
- 从矢量或地图中删除共享指针
- 在 c++ 中,有一种方法可以创建一个包含地图作为值的树状地图?
- 无限嵌套具有变体的地图
- C++一会儿循环读到地图上 2 行?
- 如何在cpp中使用地图显示给定日期范围内(在下面的问题中)的费率?
- 如何检查变量是否是C++中的地图?
- 如何使地图按值C++排序
- 修改地图内矢量中的值
- 为什么我在地图中搜索STL时差很大?
- 我正在尝试按降序对地图进行排序,但没有得到预期的结果?
- 如何包装(撰写)增强 hana 地图并访问括号运算符(运算符 [])?