因此,我有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
答案 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;
} );