대체 방법은 Kerrek SB did in his answer에서 your question으로 직접 롤백하는 것입니다.
그렇다면이 문제를 해결하기보다는 std::set_difference()
으로 문제를 해결하고 해결하는 것이 훨씬 더 낫습니다.
#include <algorithm>
#include <iostream>
#include <iterator>
#include <set>
#include <string>
int main()
{
typedef std::set<std::string> set_of_strings;
set_of_strings s1, s2, result;
s1.insert("1-2");
s1.insert("1-1");
s1.insert("3-4");
s2.insert("1-2");
s2.insert("1-3");
s2.insert("3-4");
// Temporary variables for debugging only
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_end = result.end();
std::insert_iterator<set_of_strings> result_inserter = std::inserter(result, result_end);
std::set_difference(s1_begin, s1_end,
s2_begin, s2_end,
result_inserter);
std::copy(result.begin(),
result.end(),
std::ostream_iterator<std::string>(std::cout, "\n"));
}
: 예를 들어
, 나는
set_difference
를 포함하는 라인에
templates
을 포함하는 긴 컴파일러 오류를지고 있었다, 나는 훨씬 쉽게 오류를 정확히 파악하게됩니다 별도의 간단한 문장의 작은 시리즈에 이것을 깰 것
컴파일러는 각각 set_difference
의 5 개 매개 변수가 예상되는 유형인지 확인하고 어떤 매개 변수가 별개의 명령문에서 모두 선언 되었기 때문에 어느 매개 변수가 문제를 일으키는 지 빠르게 확인할 수 있습니다.
일단 내가이 문제를 해결하면 불필요한 변수를 제거하기 위해 리팩터링하고 싶습니다.
대안은 'set_difference'로 문제를 해결하는 것입니다. – tenfour