如何使用迭代器更新地图的第二个值
How to update second value of map using iterator
我具有一个功能,其中检查了字符中的字符和次数。
它被存储为(例如)字符串为" Hello" [H] => 1 [E] => 1 [L] => 2 [O] = 1
每当一个字母不止一次地发生时,我都需要更新。
我尝试使用
it->second = it->second+1;
但行不通我该怎么做?
完整代码是
int fn(string a) {
map<char,int> mymap;
for(int i=0;i<a.size();i++)
{
std::map<char, int>::iterator it = mymap.find(i);
if(it!=mymap.end())
{
//say i need to update occurrence from 1 to 2 or 2 to 3...
it->second = it->second+1;//(how can i do that)
}
else
mymap.insert(pair<char,int>(a[i],1));
}
std::map<char,int>::iterator i;
for(i=mymap.begin();i!=mymap.end();i++)
{
cout<<i->first<<i->second;
}
}
您不需要所有这些代码。你可以说
for (auto c : a) mymap[c]++;
这起作用是因为MAP的operator[]
在给定键不存在时插入零初始化元素。
相关文章:
- 我有两个类需要在同一 cpp 文件中相互引用,但第一个类无法识别第二个类类型的对象
- 等待整个 omp 块完成,然后再调用第二个函数
- 我想在C++中读取一些多个字符,但它永远不会读取第二个字符
- 如何在创建自定义迭代器时获得 std::p air 的第一个和第二个?
- WinAPI 在单击第一个对话框上的按钮控件并销毁第一个对话框后创建第二个对话框
- 将第二个 GATT 服务添加到 Movesense 容器
- 如何在 c++ 中根据第二个元素按降序对列表进行排序
- 对的排序向量 (std::vector<pair<int, int>>) 按对的第一个元素搜索并更新第二个元素值
- 比较 2 个向量并从第二个向量中删除在第一个 - c++ 中找不到的元素
- 为什么这个程序没有打印返回的迭代器的正确第二个元素?
- 使第二个类的构造函数成为第一个类中的友元函数
- C++ make_pair地图找到第二个
- 如何获取地图中向量的第二个值?
- 为什么在地图中打印第二个元素
- 为什么地图的第二个值没有修改?
- 将映射从第二个元素复制到另一个地图
- 如何使用迭代器更新地图的第二个值
- 使用for_each或变换访问地图的第二个元素
- C++ 从地图的第二个元素迭代
- 交换指针,删除第二个对象并创建指向第二个的新指针