6
다음 코드가 있습니다.세트 사용시 VS2010의 remove_if 문제
#include <set>
#include <algorithm>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
typedef set<long> MySet;
MySet a;
for(int i = 0; i < 10; ++i)
{
a.insert(i);
}
MySet::iterator start,end,last;
start = a.begin();
end = a.end();
last = remove_if(start,end,bind2nd(less_equal<long>(),5));
return 0;
}
아래의 VS2005는 잘 컴파일하는 데 사용됩니다. '_Next': 당신이 CONST C 인 변수에 할당 할 수 없습니다 : 1 오류 C3892은
오류 : \ 프로그램 파일 \ 10.0 \ VC의 \로는 마이크로 소프트 비주얼 스튜디오 \ 알고리즘
그러나 나는 다음과 같은 오류가 VS2010를 사용하여컨테이너를 벡터로 만들면 모든 것이 잘됩니다.
내가 알고있는 표준에서 뭔가가 변경되었다고 추측합니다. 누군가 더 이상 작동하지 않는 이유에 대해 알려주시겠습니까?
당신이 그것에 대해 생각할 때 분명하다고 생각합니다. 저는 vc6에서 vs2005로 드래그 한 vs2010으로 대용량 프로젝트를 변환 해 왔습니다. 그리고 나는 작은 오류가 많이 있습니다. 내 정신 분열증 블록을 제거해 주셔서 감사합니다. 나는 vs2005가 상당히 엄격하다고 생각했다. 나는 vs2010만큼 엄격하지 않다고 생각한다. – Rich
해결 방법이 있습니까? remove_if 대신 사용할 수있는 것이 있습니까? – julienln
@julienln : 원하지 않는 항목없이'std :: remove_copy_if'를 사용하여 새 컨테이너를 만들거나 항목을 개별적으로 검색하고 지울 수 있습니다. –