をコピーします。バグ++ - STDを返さないC++のset_differenceは::私は以下のようなコードを持っている
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(....
ある問題が return copy(first1,last1,result);
set_difference
リターンです
set_differenceのアルゴリズムについては、hereを確認してください。以下のような
set_differenceリターン:
copy(..)
それはstd::copy
どんな問題はないだろうある場合。
私は以下のようなブロックの中に私の文を入れてみました:
{
using namespace std;
set_difference(s1_begin, s1_end,s2_begin, s2_end,result_inserter);
}
が、これは動作しません。 問題は私たちが独自の目的のために書いたコピー機能であり、多くの場所で使用されていることがわかりました。ここではstd::copy
を使用します。 誰でも助けてもらえますか?
[これは正常にコンパイルされます](http://ideone.com/AatQz)だから、問題はあなたが示していないコードにあります。 'set_of_strings'、' s1'、 's2'、' result1'、 'td ::'とは何ですか? *完全な*エラーメッセージは何ですか? – ybungalobill
'set_difference'は' std'名前空間で定義されており、 'std :: copy'も使うべきです。 [this code](http://codepad.org/KZZ8nBDL)をコンパイルできますか?それは何を表示しますか?別の名前空間であなた自身の 'コピー 'を動かすことができますか? – vstm
C++では型が重要です。あなたが話しているオブジェクトの半分は、そのタイプを知らない。 –