I think you're used to textbook examples, like sorting arrays of integers or so, where comparisons are cheap. Well, welcome to the real world, everything is more complicated here. In many cases, the comparison operation is more than one " if", usually a rather complex callback function. It starts by calculating the actual key for comparison depending on the object. A simple example would be to compare strings independently of each other. Here you first need to normalize the case of each row. Then you need to compare the character of the strings by character. This is a lot of work, much more work than, say, replacing two char*. Or consider tree comparisons: as part of a single comparison operation, you may need to keep track of multiple branches of both trees.
, , . , 15,25 , , . , , .