Does std::sort change the relative order of equal elements?

后端 未结 5 445
醉话见心
醉话见心 2021-01-12 02:45

Does the standard guarantee that order of equal elements will not change (eh, forgot the term for that) by using std::sort or do I need to consider an alternative solution

相关标签:
5条回答
  • 2021-01-12 02:55

    No, if you want the guarantee use std::stable_sort

    0 讨论(0)
  • 2021-01-12 02:59

    No it explicitly does not guarantee this. If you need to maintain relative ordering use stable_sort instead.

    Documentation of sort which includes reference to equivalent elements

    • http://msdn.microsoft.com/en-us/library/ecdecxh1(VS.80).aspx
    0 讨论(0)
  • 2021-01-12 03:11

    std::sort is not guaranteed to be stable (the term you were trying to think of). As you'd guess, std::stable_sort is guaranteed to be stable. std::stable_sort also provides a guarantee on worst-case complexity, which std::sort does not. std::sort is typically faster on average though.

    0 讨论(0)
  • 2021-01-12 03:16

    The term for what you're describing is stability.

    From SGI's STL docs:

    Note: sort is not guaranteed to be stable.

    Use stable_sort if you need this.

    0 讨论(0)
  • 2021-01-12 03:21

    From C++ reference: here

    Elements that would compare equal to each other are not guaranteed to keep their original relative order.

    You might want stable_sort, but note that it's not as fast (in average)

    0 讨论(0)
提交回复
热议问题