我有两张地图,我需要找到差异并创建一张只有差异的新地图。不知道该怎么做。我尝试使用 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());
}
edit:
std::set_difference( m_mapRows.begin(), m_mapRows.end(),
rhs.m_mapRows.begin(), rhs.m_mapRows.end(), diffTable.m_mapRows.begin());
好的,这就是我尝试过的,但是我收到错误,第一个是
错误 C2678:二进制“=”:找不到采用“const std::string”类型的左侧操作数的运算符(或者没有可接受的转换)
有任何想法吗?
如果您有两个已排序的容器a
and b
并且您想要将不在任一容器中的一组对象复制到另一个容器中c
,你会这样做:
std::set_symmetric_difference(
a.begin(), a.end(),
b.begin(), b.end(),
std::back_inserter(c) );
如果你只想要来自的元素a
那些不在b
, use set_difference
代替set_symmetric_difference
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)