当前位置: 首页 > 知识库问答 >
问题:

遍历unordered_map cpp时的问题

高琛
2023-03-14

当我遍历unordered_map时只有一半的测试用例通过,但是当我使用vector时所有的测试用例都通过了,难道我的代码中有错误吗?

#include<bits/stdc++++.h>
using namespace std;
int main()
{
    int n;  cin>>n;
    unordered_map<int,int> mp;
    vector<int> v;  v.reserve(n);
    while(n--)
    {
        int x,y;  cin>>x>>y;
        int h=y+x;
        if(mp[h]==0){ v.push_back(h); }
        mp[h]++;
    }
    int s; cin>>s;  int sa=0;
    for(auto i:mp)
    {
        int j=i.first+s;
        long long u=mp[j]*(i.second);
        sa=sa+u;
    }
    cout<<sa;
}

共有1个答案

余铭晨
2023-03-14

在此循环中:

for(auto i:mp)
{
    int j=i.first+s;
    long long u=mp[j]*(i.second);
    sa=sa+u;
}

在执行mp[j]时,如果j不是unordered_map中的键,则可能会修改mp。 修改range-for循环中正在迭代的范围会调用未定义的行为。

您可以使用find检查键j是否存在,并在这种情况下执行其他操作(但不修改unordered_map)。

 类似资料:
  • 输入是一个列表列表。请看下面。文件名是一个列表,包含的名称与列表中的列表数量相同(,,) 每个名称都附加到路径中:-- 程序在遍历列表时遍历包含路径的列表,并打印路径及其文件名。我希望输出是--。然而,我得到了下面的输出。请查看输入后的输出 输入 输出 我希望输出是-- 然而,我得到的结果如下: 我无法理解为什么在遍历列表时不能使用文件名遍历路径列表。我希望这有助于澄清问题。有人能帮忙吗? 我已经

  • 本文向大家介绍golang遍历时修改被遍历对象的示例详解,包括了golang遍历时修改被遍历对象的示例详解的使用技巧和注意事项,需要的朋友参考一下 前言 很多时候需要将遍历对象中去掉某些元素,或者往遍历对象中添加元素,这时候就需要小心操作了。 对于go语言中的一些注意事项我做了总结和示例,留下点笔记。 遍历切片 1.遍历切片时去掉元素,错误示例: 最终报错panic: runtime error:

  • 我真的很难修复我的代码。我已经创建了一个双链接列表,我正试图反向遍历它。 有什么想法吗? 这是我的代码:Node。爪哇: 下面是第二个类“DNode.java”: 最后,这里是双链接列表。java:(重写另一个类“链表”中的“添加”和“删除”方法) 公共类双链接列表扩展了链接列表{ 我可以向前打印列表,但向后打印时会遇到无限循环。有什么想法吗? 谢谢

  • 运行此代码时: 引发异常: 系统。无效操作异常:集合被修改;枚举操作可能无法执行。 怎么做。NET知道该集合在枚举器迭代该集合时被修改了吗?集合对象中是否有此标志?

  • 主要内容:什么是遍历?,遍历 DOM什么是遍历? jQuery 遍历,意为"移动",用于根据其相对于其他元素的关系来"查找"(或选取)HTML 元素。以某项选择开始,并沿着这个选择移动,直到抵达您期望的元素为止。 下图展示了一个家族树。通过 jQuery 遍历,您能够从被选(当前的)元素开始,轻松地在家族树中向上移动(祖先),向下移动(子孙),水平移动(同胞)。这种移动被称为对 DOM 进行遍历。 图示解析: <div> 元素是 <

  • 本文向大家介绍Swift遍历,包括了Swift遍历的使用技巧和注意事项,需要的朋友参考一下 例子            

  • 我试图在Java中使用Selenium遍历一个表(目前使用的是chromedriver)。该表的内容由不同的人组成,他们的个人资料有链接,对于该表中的每个人,我将进入他们的个人资料并提取一些信息。我将为X数量的人做这件事。该表每页包含5人,我通过单击分页按钮浏览页面” 现在来看这个问题:举个例子,我现在在exampleUrl。com/page\u包含表I,然后输入用户的配置文件并提取他们的信息,他

  • 编辑:在@Prashant回答后,我明白我的输出顺序需要保留,因此我相应地编辑了我的原始问题并重新发布。 我想从根节点(2)遍历到叶节点(1、6、8、3、11和12)。在这种遍历过程中,我希望获取连接到产品节点13(即)的节点,我希望编写一个返回1、8、9、3、11和12的查询。 @Prashant的回答: 输出 然而,我所需输出的顺序是1、8、9、3、11和12,即在每个级别上,要求选择一个子节