>  기사  >  백엔드 개발  >  왜 `std::sort`가 구조의 `std::list`를 정렬하지 못합니까?

왜 `std::sort`가 구조의 `std::list`를 정렬하지 못합니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-10 22:00:03527검색

Why Does `std::sort` Fail to Sort a `std::list` of Structures?

STL 정렬 함수를 사용하여 목록 정렬: 구현 문제

std::sort 함수를 사용하여 구조 목록을 정렬하려고 할 때 , 연산자가 누락되었음을 나타내는 컴파일 오류가 발생할 수 있습니다. 이 오류는 제공된 비교기인 SortDescending이 std::sort에 필요한 임의 액세스 반복자가 아닌 양방향 반복자를 지원하는 std::list의 요소에서 작동할 때 발생합니다.

이 문제를 해결하려면 다음을 사용하는 대신 std::sort에서는 목록을 구체적으로 처리하도록 설계된 std::list

Result.poly.sort(SortDescending());

를 사용하여 수정된 코드입니다. std::list<>::sort 멤버 함수에도 비교기 함수가 필요합니다. SortDescending 비교기는 변경되지 않습니다.

struct SortDescending
{
    bool operator()(const term&amp; t1, const term&amp; t2)
    { 
        return t2.pow < t1.pow; 
    }
};

SortDescending 비교기와 함께 std::list<::sort를 활용하면 'pow' 멤버를 기준으로 목록을 내림차순으로 성공적으로 정렬할 수 있습니다. '용어' 구조.

위 내용은 왜 `std::sort`가 구조의 `std::list`를 정렬하지 못합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.