У меня есть код как показано ниже:
typedef std::set<std::string> set_of_strings;
set_of_strings s1, s2, result1;
some_func()
{
s1.insert("1-2");
s1.insert("1-1");
s1.insert("3-4");
s2.insert("1-2");
s2.insert("1-3");
s2.insert("3-4");
set_of_strings::iterator s1_begin = s1.begin();
set_of_strings::iterator s1_end = s1.end();
set_of_strings::iterator s2_begin = s2.begin();
set_of_strings::iterator s2_end = s2.end();
set_of_strings::iterator result_begin = result1.begin();
td::insert_iterator<set_of_strings> result_inserter = std::inserter(result1, result_begin);
set_difference(s1_begin, s1_end,s2_begin, s2_end,result_inserter); //This is the problem line
}
Ошибка компиляции, которую я получаю overloading ambiguity std::copy(....
проблема set_difference
возвращается как
return copy(first1,last1,result);
Пожалуйста, проверьте здесь для алгоритма set_difference.
set_difference возвращает как:
copy(..)
если это std::copy
, то проблем не будет.
Я пытался поместить свое утверждение в блок, как показано ниже:
{
using namespace std;
set_difference(s1_begin, s1_end,s2_begin, s2_end,result_inserter);
}
но это не работает.
Я знаю, что проблема в функции копирования, которую мы написали для наших собственных целей, и она используется во многих местах. Здесь я хочу использовать std::copy
.
Может кто-нибудь, пожалуйста, помогите.