Если у вас есть две карты, с некоторыми различных записей, называемых oldMap
и newMap
, то вы можете использовать std::set_difference
, чтобы получить уникальные записи из обеих карт. См. Следующий пример того, как это можно сделать.
#include <map>
#include <string>
#include <algorithm>
#include <utility>
#include <iterator>
#include <iostream>
int main() {
// Two maps containing some values.
std::map<std::string, int> oldMap { {"test1", 1}, {"test2", 2}, {"test3", 3} };
std::map<std::string, int> newMap { {"test2", 2} };
// Create new map that holds distinct pairs.
std::map<std::string, int> diffMap;
// Add distinct pairs to diffMap.
std::set_difference(begin(oldMap), end(oldMap),
begin(newMap), end(newMap),
std::inserter(diffMap, begin(diffMap)));
// Output result
for (auto& p : diffMap) {
std::cout << p.first << " " << p.second << std::endl;
}
}
Выход:
test1.txt 1
test3.txt 3
Эти две записи, которые не найдены в обеих картах.
В чем вопрос? – Borgleader
Взгляните на http://www.cplusplus.com/reference/algorithm/set_difference/. Это очень плохо спроектированный вопрос. – Chad