我如何返回一个包含 c++ 中两个映射差异的 std::map ?

Bul*_*127 3 c++ dictionary std

我有两张地图,我需要找到差异并创建一张只有差异的新地图。不知道该怎么做。我尝试使用 set_difference 但不太明白它是如何工作的。任何帮助,将不胜感激。谢谢

// header file
typedef std::map<std::string, int> MapCol;
typedef std::map<std::string, MapCol> MapRow;
MapRow m_mapRows;

//.cpp fle
CheckForDifferences( const Table& rhs )
{
    Table diffTable;
    vector<string> v;                           
    vector<string>::iterator it;
    it=set_difference (m_mapRows.begin(), m_mapRows.end(), diffTable.m_mapRows.begin(), diffTable.m_mapRows.end, v.begin());
}
Run Code Online (Sandbox Code Playgroud)

编辑:

std::set_difference( m_mapRows.begin(), m_mapRows.end(),
rhs.m_mapRows.begin(), rhs.m_mapRows.end(), diffTable.m_mapRows.begin());
Run Code Online (Sandbox Code Playgroud)

好的,这就是我尝试过的,但我收到错误,第一个错误是错误 C2678: 二进制 '=' : 找不到使用 'const std::string' 类型的左操作数的运算符(或者没有可接受的转换)

有任何想法吗?

Pet*_*ker 5

如果您有两个已排序的容器a,并且b您想要将不在其中一个容器中的一组对象复制到另一个容器中c,您可以这样做:

std::set_symmetric_difference(
    a.begin(), a.end(),
    b.begin(), b.end(),
    std::back_inserter(c) );
Run Code Online (Sandbox Code Playgroud)

a如果您只想获取不在 中的元素b,请使用set_difference代替set_symmetric_difference