从map1不在map2中查找最大elem

时间:2018-07-24 22:32:39

标签: c++ input stl maps

因此,我有2个STL映射,正在其中从文件读取数据。它将数据读入1,直到读入的数据为0,然后继续移动到第二个映射并将数据存储到该映射中。

我试图在map1中找到max元素,而map2中没有该元素。这是我的代码:

map<int, int> dataMap1;
map<int, int>:: reverse_iterator i;
map<int, int> dataMap2;
map<int, int>:: iterator j;

for(i = dataMap1.rbegin(); i != dataMap1.rend(); i++) {
    largestNum = i->first;
    j = dataMap2.find(largestNum);
    if(largestNum > j->first) {
        cout << largestNum << endl;
        break;
    } else {
        continue;
    }
}

但是,它没有按预期工作。有时它给我正确的输出,但有时却给我错误的答案。

如果有人能帮助我,我将非常感谢。

谢谢。

编辑:示例数据- 2

4

3

6

5

9

0 //上面的存储在map1,0中,下面的所有存储在        map2

1

4

5

3

2 个答案:

答案 0 :(得分:1)

据我所知,#!/bin/bash set -e # encrypted disk dd of=secretfs bs=20G count=0 seek=8 chmod 600 secretfs losetup /dev/loop0 secretfs cryptsetup -y luksFormat /dev/loop0 cryptsetup luksOpen /dev/loop0 secretfs cryptsetup status secretfs mke2fs -j -O dir_index /dev/mapper/secretfs tune2fs -l /dev/mapper/secretfs mkdir /mnt/secretfs mount /dev/mapper/secretfs /mnt/secretfs 测试错误。

if

答案 1 :(得分:0)

只需使用std::find_if

auto it = std::find_if( dataMap1.rbegin(), dataMap1.rend(), [&dataMap2]( const auto &p ) {
    return dataMap2.count( p.first ) == 0;
} );

live example