开发者

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

开发者 https://www.devze.com 2022-12-09 19:22 出处:网络
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 alte开发者_开发技巧rnative solution to achieve thi

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 alte开发者_开发技巧rnative solution to achieve this goal?


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.


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)


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


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


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

精彩评论

暂无评论...
验证码 换一张
取 消