sort 排序优化
#define _for(i,a,b) for(int i = (a); i < (b); i++)
#define N 1000000
struct Node{
int a,b,c;
};
struct cmp{
inline bool operator() (const Node& t1, const Node& t2){
if(t1.a != t2.a) return t1.a < t2.a;
if(t1.b != t2.b) return t1.b < t2.b;
return t1.c <= t2.c;
}
};
Node ts[N];
void genData(){
_for(i,0,N){
ts[i].a = rand();
ts[i].b = rand();
ts[i].a = rand();
}
}
int main(){
genData();
clock_t start = clock();
sort(ts,ts+N,cmp());
printf("sort by cmp:%ld\n",clock() - start);
return 0;
}
内存池:
template<typename T>
struct Pool {
vector<T*> buf;
T* createNew() {
buf.push_back(new T());wseddqd
return buf.back();
}
void dispose() {
for (int i = 0; i < buf.size(); i++) delete buf[i];
buf.clear();
}
};
(1)使用方法:
struct Node{...};
Pool <Node> a
Node *p = a.createNew();