내 코드가 내 Visual Studio 2010에는 있지만 DevCPP에는 문제가 있습니다. Heres 상황, 나는 pair<string, double>
을 삽입하려면 내 코드에서 C++ STL set
을 사용했지만 그 다음에 키를 사용하여 값을 사용하여 내 set
을 정렬해야하므로이를 달성하기 위해 사용자 지정 비교기를 사용했습니다.Visual Studio 어설 션이 C++ 세트 비교기에서 실패했습니다.
struct sortPairSecond
{
bool operator()(const pair<string, double> &lhs, const pair<string, double> &rhs)
{
return lhs.second >= rhs.second;
}
};
코드는 DevCPP에서 잘 작동하지만 디버그 어설 VS2010를 사용하여 xtree에 실패가 발생했습니다. 일부 디버깅을했는데 오류가 사용자 정의 비교기에서> =를 사용하여 발생했음을 알았습니다. = 제거하면 코드가 작동하지만 잘못된 결과는 프로그램에서 허용되어야합니다. 그러므로 누구든지이 문제에 대해 저를 도울 수 있습니까?
절대적으로> =은 허용되지 않으며>해야합니다. 그러나'std :: multiset'에서도>를 사용해야합니다. – john
답변을 주셔서 감사합니다. 이제 코드가 작동하고 초기 실수를 인식하게되었습니다. 어쨌든, 코드가 DevCPP에서는 잘 실행되지만 VS2010에서는 제대로 실행되지 않는 이유는 무엇입니까? –
DevCPP는 어설 션을 검사하지 않고 정렬을 시도하지만 어떤 방식으로 생성되는지에 대한 "정의되지 않은"동작입니다. VS2010은 릴리스 빌드에서도 동일한 작업을 수행합니다. – CashCow