Unreal Engine

12 . 언리얼 TArray Sort VS StableSort

CE : 하랑 2026. 2. 8. 16:02

 

1. Sort 사용 시

TArray::Sort는 빠르고 단순한 정렬을 제공합니다. 기본적으로 안정성을 보장하지 않기 때문에 동일한 값들이 있을 때, 그들의 순서가 변경될 수 있습니다.

 

언제 사용할까요?

  • 정렬 기준이 하나일 때: 예를 들어, 희귀도 가격과 같은 기준 하나로만 정렬할 때는 Sort가 더 빠르고 적합할 수 있습니다.
  • 동일한 값들 간의 순서가 중요하지 않을 때: 만약 인벤토리에서 동일한 희귀도를 가진 아이템들 순서가 바뀌어도 문제가 없다면 Sort가 더 효율적입니다.
TArray<FInventoryItem> oInventory_List = {
    FInventoryItem{TEXT("Potion"), 1, 10},
    FInventoryItem{TEXT("Sword"), 2, 5},
    FInventoryItem{TEXT("Shield"), 2, 3},
    FInventoryItem{TEXT("Bow"), 1, 7}
};

// 희귀도 기준 내림차순 정렬
oInventory_List.Sort([](const FInventoryItem& A, const FInventoryItem& B) {
    return A.Rarity > B.Rarity;  // 내림차순
});

// 정렬 후 출력
for (const FInventoryItem& Item : oInventory_List)
{
    UE_LOG(LogTemp, Log, TEXT("Item: %s, Rarity: %d"), *Item.Name, Item.Rarity);
}

장점:

  • 빠름: Sort는 안정성을 고려하지 않기 때문에 속도 면에서 더 빠를 수 있습니다.
  • 단순한 정렬: 하나의 기준으로 정렬할 때는 안정성이 필요하지 않으므로 Sort가 적합합니다.

단점:

  • 동일한 값들의 상대적 순서를 보장하지 않기 때문에, 순서가 중요한 경우에는 적합하지 않을 수 있습니다.

 

 

2. StableSort 사용 시

안정적인 정렬을 제공합니다.

동일한 값들의 순서를 유지하며, 이로 인해 복합 조건으로 정렬할 때 매우 유용합니다.

언제 사용할까요?

  • 복합 정렬이 필요한 경우: 예를 들어 희귀도를 기준으로 먼저 정렬하고, 그 후 아이템 이름으로 다시 정렬하는 경우, StableSort가 유용합니다.
  • 동일한 값들의 순서를 보장해야 하는 경우: 예를 들어, 동일한 희귀도를 가진 아이템들의 순서가 변하면 안 되는 상황에서는 StableSort를 사용하는 것이 중요합니다.
TArray<FInventoryItem> oInventory_List = {
    FInventoryItem{TEXT("Potion"), 1, 10},
    FInventoryItem{TEXT("Sword"), 2, 5},
    FInventoryItem{TEXT("Shield"), 2, 3},
    FInventoryItem{TEXT("Bow"), 1, 7}
};

// 안정적인 정렬: 희귀도 기준 내림차순, 이름 기준 오름차순
oInventory_List.StableSort(Inventory, [](const FInventoryItem& A, const FInventoryItem& B){
    if(A.Rarity == B.Rarity)
        return A.Name < B.Name;  // 이름 기준 오름차순
    return A.Rarity > B.Rarity;  // 희귀도 기준 내림차순
});

// 정렬 후 출력
for (const FInventoryItem& Item : oInventory_List)
{
    UE_LOG(LogTemp, Log, TEXT("Item: %s, Rarity: %d"), *Item.Name, Item.Rarity);
}

장점:

  • 안정성 보장: 동일한 값들의 상대적인 순서가 유지됩니다. 따라서 복합 조건으로 정렬할 때 유용합니다.
  • 동일 값들의 순서 유지: 예를 들어, 희귀도가 같은 아이템들 사이에서 이름의 순서가 바뀌지 않도록 할 수 있습니다.

단점:

  • Sort에 비해 성능이 약간 느릴 수 있습니다. 안정성을 제공하려면 추가적인 계산이 필요하기 때문에, 속도가 중요한 경우 성능 차이가 있을 수 있습니다.

 

최종 정리

1. Sort

(1) 정렬 기준이 하나일 때

(2) 성능이 가장 중요한 경우 (빠르고 효율적)

 

2. StableSort

(1) 복합 조건 정렬이 필요할 때

(2) 동일한 값들의 순서가 중요한 경우 (동일 값들의 상대적인 순서 유지)

 

'Unreal Engine' 카테고리의 다른 글

15. 게임 모드  (1) 2026.03.15
13. 언리얼 MultiMap  (0) 2026.02.08
10. FMath  (0) 2026.02.01
9. [언리얼 C++] 멀티캐스트 델리게이트  (0) 2026.02.01
7. FTickableGameObject  (0) 2026.02.01