私は以下のようなコードを持っています:
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
. 誰でも助けてくれませんか。