我有如下代码:
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
。有人可以帮忙吗?