在一次刷题的过程中偶然发现一个问题,vector
vector
vector< bool> c{ false, true, false, true, false };
bool b = c[0];
auto d = c[0];
c[0]是std::vector< bool>:reference的对象,b在操作的进行了类型转换,而auto b则也变为代理引用,那在对d进行操作时就会影响到c[0]本身的值。
d = true;
for(auto i:c)
cout << i << " ";
cout << endl;
//上式会输出1 1 0 1 0
比较其执行效率
运行相同次数的push_buck()比较vector
int main(){
vector ch;
vector in;
vector bo;
int m = 1e6;
clock_t t1, t2, t3;
t1 = clock();
for (int i = 0; i < m; i++){
ch.push_back('0');
}
t1 = clock() - t1;
t2 = clock();
for (int i = 0; i < m; i++){
in.push_back(0);
}
t2 = clock() - t2;
t3 = clock();
for (int i = 0; i < m; i++){
bo.push_back(true);
}
t3 = clock() - t3;
cout <<"vector "<< t1 << "n vector " << t2 << "nvector " << t3 << endl;
cout << endl;
system("pause");
return 0;
}
运行结果:
可以发现vector



