在 quque 或 set 或 map 中,存结构体指针加速(省去调用构造函数)。
附一个队友 yzwsm 共享的链接。
#include <set> #include <stdio.h> #include <algorithm> using namespace std; struct T { int x; T(){} T(int _x):x(_x){} bool operator < (const T& B) const { return x < B.x; } }; template<typename T> struct Cmp { bool operator () (const T& pa,const T& pb) const { return *pa < *pb; } }; set< T*, Cmp<T*> > s; T a[400]; int main() { T* ptop = &a[0]; ptop->x = 5; s.insert(ptop++); ptop->x = 1; s.insert(ptop++); ptop->x = 4; s.insert(ptop++); ptop->x = 3; s.insert(ptop++); ptop->x = 2; s.insert(ptop++); ptop->x = 6; s.insert(ptop++); for(set<T*>::iterator it=s.begin();it!=s.end();it++) { printf("%d\n",(*it)->x); } return 0; }