今天寫包裹中物品排序,有一些需要注意的問題和效率上的需要注意的事情,特此記下,備忘:
我的方法是:
1..遍歷包裹,將需要疊加的物品疊加
2..再用qsort進行排序 (這個方法非常的好用,屢試不爽啊,他能將需要排序的數組重寫數據.hoho~~~)
排序原則:
先判斷物品類型->再判斷物品ID->再判斷物品擁有數量
需要注意的問題是:防止用戶重復點擊 一直排序
解決方法:只有服務器回復排序完成之后,客戶端才能向服務器發送排序消息
來段測試的小代碼
// test.cpp : 定義控制臺應用程序的入口點。
//

#include "stdafx.h"
#include <vector>
#include <Windows.h>
using namespace std;



struct stElement


{
int nType;
int nCnt;
stElement( int type, int cnt )

{
nType = type;
nCnt = cnt;
}
};


int compare( const void *arg1, const void *arg2 )


{
stElement* p1 = (stElement*)arg1;
stElement* p2 = (stElement*)arg2;


if ( p1->nType < p2->nType )
{
return -1;

}else if ( p1->nType > p2->nType)
{
return 1;

}else
{
if ( p1->nCnt < p2->nCnt )
return 1;
else if ( p1->nCnt > p2->nCnt )
return -1;
else
return 0;
}
}

int _tmain(int argc, _TCHAR* argv[])


{
vector<stElement> vec;
vec.push_back( stElement(3,10) );
vec.push_back( stElement(5,10) );
vec.push_back( stElement(1,11) );
vec.push_back( stElement(2,50) );
vec.push_back( stElement(3,9) );
vec.push_back( stElement(3,20) );
vec.push_back( stElement(7,1) );
vec.push_back( stElement(3,8) );
vec.push_back( stElement(4,7) );
vec.push_back( stElement(3,8) );
vec.push_back( stElement(3,5) );

qsort( &vec[0], vec.size(), sizeof(stElement), compare );


return 0;
}


posted on 2010-12-18 18:49
風輕云淡 閱讀(2058)
評論(7) 編輯 收藏 引用 所屬分類:
UI