У меня есть код, как показано ниже:ошибка в C++ - set_difference в C++ не возвращает зЬй :: копировать
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);
Пожалуйста, проверьте here для алгоритма set_difference.
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'. Можете ли вы скомпилировать [этот код] (http://codepad.org/KZZ8nBDL) - что он показывает? Можете ли вы переместить свою собственную «копию» в другое пространство имен? – vstm
Типы важны в C++. Половина объектов, о которых вы говорите, мы не знаем типов. –