#include #include #include #include #include #include #include #include #include #include #include using namespace std; const int REP = 100000; const int N = 1000; const int AND = 31; const int LIM = 15; inline bool llim(int x) { return x < LIM; } CONSOLE_APP_MAIN { Vector seq; for(int i = 0; i < N; i++) seq.Add(rand() & AND); for(int n = 0; n < REP; n++) { { Vector s(seq, 1); RTIMING("Vector trivial"); Vector t; for(int i = 0; i < s.GetCount(); i++) if(s[i] >= LIM) t.Add(s[i]); } { Vector s(seq, 1); RTIMING("Vector reserve"); Vector t; t.Reserve(s.GetCount()); for(int i = 0; i < s.GetCount(); i++) if(s[i] >= LIM) t.Add(s[i]); } { Vector s(seq, 1); RTIMING("Vector single"); int q = 0; for(int i = 0; i < s.GetCount(); i++) if(s[i] >= LIM) s[q++] = s[i]; s.SetCount(q); } { list l(seq.Begin(), seq.End()); RTIMING("list remove_if"); l.remove_if(llim); } } }