用swap防止同一对象的赋值，并用指针的方法加快swap的速度