나는 코드를 아래와 같이있다 :버그 - 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
}
내가 얻는 컴파일 오류가 문제가 return copy(first1,last1,result);
set_difference
반환
overloading ambiguity std::copy(....
입니다
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++에서 중요합니다. 당신이 말하는 대상의 절반은 유형을 모릅니다. –