C++ 两个字符集的集差C++; 问题

C++ 两个字符集的集差C++; 问题,c++,stl,set,C++,Stl,Set,我有两个分类集: set<char, greater<char> > alp1; set<char, greater<char> > alp; 但是,从alp中只减去alp1的第一个元素 尝试2 itr=set_差异(alp.begin(),alp.end(),alp1.begin(),alp1.end(),diff1.begin()); 对于(auto it=diff.begin();it您需要将一个greater()比较器传递到set_dif

我有两个分类集:

set<char, greater<char> > alp1;
set<char, greater<char> > alp;
但是,从
alp
中只减去
alp1
的第一个元素

尝试2
itr=set_差异(alp.begin(),alp.end(),alp1.begin(),alp1.end(),diff1.begin());

对于(auto it=diff.begin();it您需要将一个
greater()
比较器传递到
set_difference
,即用于集合的相同比较器(请参阅):

演示:

set_difference(alp.begin(), alp.end(), alp1.begin(), alp1.end(), inserter(diff1, diff1.end()));
itr = set_difference(alp.begin(), alp.end(), alp1.begin(), alp1.end(), diff1.begin());
for(auto it=diff.begin(); it<itr; it++)
   cout<<*it;
no match for ‘operator<’ (operand types are ‘std::_Rb_tree_const_iterator<char>’ and ‘std::set<char>::const_iterator’ {aka ‘std::_Rb_tree_const_iterator<char>’})
#include <algorithm>
#include <iostream>
#include <set>

using namespace std;

int main() {
  set<char, greater<char>> alp = {'a', 'b', 'c', 'd', 'e'};
  set<char, greater<char>> alp1 = {'a', 'b', 'c'};
  set<char, greater<char>> diff;
  set_difference(alp.begin(), alp.end(), alp1.begin(), alp1.end(),
                 inserter(diff, diff.begin()), greater<char>());
  for (const char c : diff) {
    cout << c;
  }
  return 0;
}
ed