Я бы хотел перегрузить функцию подкачки для std :: vector примитивных типов / объектов. Причина в медленной сортировке векторов, содержащих большие объекты, с использованием std :: sort. Вот простой, но не рабочий пример.
#include <vector>
#include <algorithm>
class Point
{
private:
double x, y;
public:
Point(double xx, double yy) : x(xx), y(yy) {}
bool operator < ( const Point& p ) const
{
return x < p.x;
}
void swap(Point &p)
{
std::swap(*this, p);
}
};
namespace std
{
void swap( Point &p1, Point &p2)
{
p1.swap(p2);
}
}
typedef std::vector<Point> TPoints;
int main()
{
Point p1(0,0);
Point p2(7,100);
TPoints points;
points.push_back(p1);
points.push_back(p2);
//Overloaded metod swap will not be called
std::sort(points.begin(), points.end());
}
К сожалению, во время загрузки перегруженного метода std :: sort не вызывается. Я полагаю, что вектор, содержащий объекты, будет похожей ситуацией ... Спасибо за помощь ...