c++ - std::sort doing lots of unnecessary swaps -
i have following code try lexicographical comparison of 2 simple vectors class expensiveclass { public: static int increment; std::vector<int> bigvector; expensiveclass() { (int j = 0; j < 1 + increment; ++j) bigvector.emplace_back(j); ++increment; } expensiveclass(const expensiveclass& other) { std::cout << "expensive copy constructor called!" << std::endl; this->bigvector = other.bigvector; } }; int expensiveclass::increment = 0; bool sortfunc(const expensiveclass& a, const expensiveclass& b) { bool ret = a.bigvector < b.bigvector; if (ret == false) std::cout << "need swap" << std::endl; return ret; } int main() { std::vector<expensiveclass> vectorofvectors; vectorofvectors.reserve(100); (int = 0; < 100; ++i) vectorofvectors.emplace_back(); std::cout << "start sorting.." << std::endl; std::sort(vectorofvectors.begin...