如何区分两个std :: set <string>的元素?</string>

时间:2011-08-25 18:43:17

标签: c++ string diff set

所以我们有set<string> aset<string> b,我们想要std::set<string> c包含代表a - b的项目(意味着a剩下的内容如果我们从b中移除所有项目,如果b包含的内容超过aa中不存在的内容,我们希望保留类似数字的简单数学: 5-6 = 03-2 = 1}

3 个答案:

答案 0 :(得分:11)

我认为您希望来自std::set_difference()的{​​{1}}。

<algorithm>

答案 1 :(得分:3)

假设你的意思是集合的差异:

set_difference

如果您的意思是元素之间的比较,那么实际上不可能以一般或简单的方式回答它。答案将非常具体针对您的问题,该问题未指定或明确。

答案 2 :(得分:1)

我认为这应该有用。

for( set<string> :: iterator it = a.begin(); it != a.end(); ++it )
{
     set<string>:: iterator iter = find( b.begin(), b.end(), *it );
     if( iter == b.end() )
     {        // ^^^^^^^   Note: find returns b.end() if it does not find anything.
        c.insert(*iter)
     }
}