#include
#include
#include
#include
using namespace std;
#define TESTNUM 1000000
#define STRINGLENGTH 1000
string CreateString()
{
string s;
for (int i = 0; i < STRINGLENGTH; i)
{
s = char(rand()%5 1);
}
return s;
}
template
void MySwap(_Ty& _Left, _Ty& _Right)
{ // exchange values stored at _Left and _Right
_Ty _Tmp = _Left;
_Left = _Right, _Right = _Tmp;
}
int main()
{
vector
vector
for (int i = 0; i < 100; i)
{
box.push_back(CreateString());
box2.push_back(NULL);
}
{
clock_t t1 = clock();
for (int i = 0; i < TESTNUM; i)
{
MySwap(box[rand()0], box[rand()0]);
}
cout << clock() - t1 << endl;
}
{
clock_t t1 = clock();
for (int i = 0; i < TESTNUM; i)
{
MySwap(box2[rand()0], box2[rand()0]);
}
cout << clock() - t1 << endl;
}
{
clock_t t1 = clock();
for (int i = 0; i < TESTNUM; i)
{
swap(box[rand()0], box[rand()0]);
}
cout << clock() - t1 << endl;
}
return 0;
}
¡¡¡¡MySwapʵ¼ÊÉϾÍÊÇ´ÓSTLÀïÃæÔÑù¿½±´³öÀ´µÄ£¬µ«ÊÇÎÒÃÇÄܹ»¿´µ½ÕâºÍSTLµÄSwapЧÂÊÓÐÌìÈÀÖ®±ð¡£ÒòΪstringʵ¼ÊÉÏһЩ±ØÒªµÄÐÅÏ¢¼ÓÉÏ×Ö·û´®»º´æ¹¹³ÉµÄ£¬¶ÔÓÚSTLµÄSwap£¬±àÒëÆ÷ÖªµÀÖ»ÐèÒª½»»»ÄÇЩ±ØÒªÐÅÏ¢¾ÍÄܹ»ÁË£¬¶øÎÞÐè½øÐÐÉ±´£»µ«ÊǶÔÓÚÎÒÃÇдµÄMySwap£¬±àÒëÆ÷²»ÖªµÀ£¬ËùÒÔ½øÐÐÁËÉ±´¡£Swap±È½»»»Ö¸ÕëÂýÒ»µãÊÇÒòΪstringµÄ±ØÒªÐÅÏ¢±ÈÒ»¸öÖ¸Õë¶àһЩ¡£¼ÙÈçÔö¼Ó²âÊÔ×Ö·û´®µÄ³¤¶È£¬»á·¢ÏÖSwapµÄºÄʱÊDz»±äµÄ£¬¶øMySwapµÄºÄʱ»áÏßÐÎÔö¼Ó¡£
¡¡¡¡ËùÒÔÎÒÃÇ´ó¿É²»±ØÒòΪ¿Ö»ÅstringµÄÉ±´£¬¶øÔÚvectorÀïÃæÊ¹ÓÃstringµÄÖ¸Õë



