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

标签 c++ map std

我有两张 map ,我需要找到不同之处并创建一个只有不同之处的新 map 。不知道该怎么做。我尝试使用 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());
}

编辑:

std::set_difference( m_mapRows.begin(), m_mapRows.end(),
rhs.m_mapRows.begin(), rhs.m_mapRows.end(), diffTable.m_mapRows.begin());

好的,这是我尝试过的方法,但我遇到了错误,第一个是 error C2678: binary '=' : 没有找到接受类型为 'const std::string' 的左手操作数的运算符(或者没有可接受的转换)

有什么想法吗?

最佳答案

如果您有两个已排序的容器 ab 并且您想要将不在任何一个容器中的对象集复制到另一个容器 c,你会这样做:

std::set_symmetric_difference(
    a.begin(), a.end(),
    b.begin(), b.end(),
    std::back_inserter(c) );

如果您只想要 a 中不在 b 中的元素,请使用 set_difference 而不是 set_symmetric_difference.

关于c++ - 我如何返回包含 C++ 中两个映射差异的 std::map?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13201463/

相关文章:

元组类型的 Java 字典值

c++ - 将文件流插入到 std::map

java - 为什么我的 map 坏了?

python - 通过 std::system 调用 python 时出错

c++ -::std::mutex 在 std 之前使用时是什么意思

c++ - 查找二进制文件中所有出现的字节序列

C++将字符串传递到管道中以传递给gnuplot

c++ - 使用boost shared_ptr时使用默认参数

c++ - 使用 C++ 和 Linux 收听 "connection less UDP Multicast"的步骤

c++ - SQLite 在 252 个条目处停止