일부 연구를 수행 한 후 std::sort
과 함께 무엇이 잘못 될지 질문합니다.std :: sort를 올바르게 수행 할 수 없습니다.
올리버 찰스 워스 (Oliver Charlesworth)의 조언에 따르면 here에서 알고리즘 헤더를 포함하여 비교 기능을 만들고 내 기능에 std::sort
을 호출했습니다. 나는 여전히 오류가 발생하고 있습니다. 아마 아직도 감시.
오류 :
오류 C2780 무효 표준 : : 정렬 (_RanIt, _RanIt)는 '2 개 인자 예상 - (3)가 제공
오류 C2672'표준 : : 일종의 '발견 일치하는 오버로드 기능
오류 C3867 'ImageEvaluator :: comparator': 비표준 구문; 사용 '&'멤버에 대한 포인터를 만들 수
구조체 :
struct numLocWidth
{
int width;
int number;
int location;
};
비교 :
bool comparator(const numLocWidth &a, const numLocWidth &b)
{
return a.location < b.location;
}
기능 :
if (tempMax > minAcceptableValue)
{
tempLocAndVal.location = max_Pot_Loc.x;
tempLocAndVal.number = i - 1;
tempLocAndVal.width = templates[7][i].size().width;
foundNumbers.push_back(tempLocAndVal);
std::sort(foundNumbers.begin(), foundNumbers.end(), comparator);
}
여기에 무슨 일이 일어나고 있는지 확실하지 내 머리를 긁적 거리다. 또는 조금. 내 자신의 정렬 함수를 작성할 수 있지만이 방법이 더 효율적일 것이라고 확신합니다.
그것은 comparator''모양에 대한 비 정적 클래스 멤버 함수이다. 정적 또는 비회원으로 만듭니다. – VTT
[MCVE] (https://stackoverflow.com/help/mcve)를 참조하십시오. –
충분한 정보를 제공하지 않았습니다. 오류 메시지에서'comparator()'가 어떤 클래스의 비 정적 멤버 함수 인 것처럼 보입니다. 비교기를 세 번째 인수로 받아들이는'std :: sort()'의 변형은 이진 함수 (즉, 클래스의 정적 멤버 또는 필수 인수를 허용하는 비 멤버 함수)를 필요로합니다. – Peter