跑一下下面的程序,看看vector<bool>的表现吧
void TestVectorBool(){
vector<bool> vecbool;
vector<char> vecchar;
const size_t vecsize = 0x03200000;
for(size_t i = 0; i < vecsize; i++){
vecbool.push_back(true);
vecchar.push_back(1);
}
DWORD start = timeGetTime();
size_t count = 0;
for(size_t i = 0; i < vecsize; i++){
if(vecbool[i])
count += vecbool[i];
}
printf("count=%u, %ums\n",count, timeGetTime() - start);
count = 0;
start = timeGetTime();
for(size_t i = 0; i < vecsize; i++){
if(vecchar[i])
count += vecchar[i];
}
printf("count=%d, %ums\n", count, timeGetTime() - start);
return;
}
不过也还好,在我的电脑上执行0x03200000次,速度差5倍,相比节约内存8倍来比,还是可以接受的。