본문으로 바로가기
COMMUNITY모든 이야기

std::vector 내 std::unique_ptr 요소 정렬 시 컴파일 에러 해결 방법

빗방울 2026.10.31 04:15 2분 읽기 조회 109 · 추천 1

토이 프로젝트 중인데, 스마트 포인터로 관리하는 객체 리스트를 특정 멤버 변수 기준으로 정렬하려고 합니다.

코드:

#include <iostream>
#include <vector>
#include <memory>
#include <algorithm>

struct Item {
    int id;
    Item(int i) : id(i) {}
};

int main() {
    std::vector<std::unique_ptr<Item>> items;
    items.push_back(std::make_unique<Item>(10));
    items.push_back(std::make_unique<Item>(5));

    std::sort(items.begin(), items.end()); 
    return 0;
}

오류: error: no match for 'operator<' (operand types are 'std::unique_ptr<Item>' and 'std::unique_ptr<Item>')

시도: unique_ptr에 operator< 오버로딩 시도했으나 소유권 문제로 불가능함 확인.

질문: 람다 식을 사용해 내부 포인터의 id 값을 기준으로 정렬하려면 sort 함수를 어떻게 작성해야 합니까?

모든 이야기1455

가벼운 안부부터 깊은 생각까지, 함께 나눠요.

글쓰기
총 1455개의 이야기
댓글