c++ - 比较两个映射以查看一个是否是子集

标签 c++

我正在检查区分大小写的两个 map ,如果在 note_map 中出现重复项,则 mag_map 必须大于或等于。

void checkMagazine(vector<string> magazine, vector<string> note) {
    std::map<string, int> mag_map;
    std::map<string, int> note_map;

    for(auto it : magazine){
       mag_map[it]++;
    }

     for(auto it : note){
       note_map[it]++;
    }

我想检查 mag_map 以查看它是否包含 note_map 中的键,我还想查看 mag_map 中是否有足够的事件来制作笔记。

最佳答案

您的开端不错。现在您只需遍历 note 并检查每个单词是否出现在 mag_map 中。如果是,那么您还需要检查该单词在 mag_map 中出现的次数是否至少 与在note_map 中出现的次数一样多。如果在任何一次迭代中有一个条件不成立,那么您可以从那里中断并打印“否”,因为无法从杂志中制作赎金票据。

提示:使用find(Key)搜索并 operator[]获取计数。

关于c++ - 比较两个映射以查看一个是否是子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56031080/

相关文章:

c++ - 如何在返回常量引用的类成员上正确调用 setter

c++ - 未提供 .lib 时如何在 visual studio 2010 中添加和使用第三方 .dll

c++ - 在 C++ 中优化空间而不是速度

c++ - 扩展包含 int 包的类型

c++ - 如何从另一个类的成员函数访问数据成员和成员函数?

c++ - 如何在 C++20 Ranges TS 中实现类似 Python 的切片?

c# - 如何从此数组中检索信息?

python - 当 QApplication 退出时,QT 引发段错误(核心已转储)

c++ - 在不同的计算机上运行 Qt 应用程序

c++ - 没有非空函数的返回语句是否是未定义的行为,其中控制永远不会结束?