QVector和vector的隐式共享
作者:互联网
QVector
- QVector默认使用隐式共享,可以通过setSharable(bool b)改变其隐式共享;
- 使用non-const操作和函数将引起深拷贝;
- at()比operator[]速度快,因为它是const操作,不进行深拷贝;
- QVector取值都会检查越界;
QVector<int> vecA; QVector<int> vecB; vecA.push_back(1); vecA.push_back(10);
vecB= vecA; cout<<"&vecA.at(0) : "<<&vecA.at(0)<<endl; cout<<"&vecB.at(0) : "<<&vecB.at(0)<<endl;
QVector<int> vecC;
vecA.setSharable(false);
vecC = vecA;
cout<<"&vecA.at(0): "<<&vecA.at(0)<<endl;
cout<<"&vecC.at(0): "<<&vecC.at(0)<<endl;
当禁用隐式共享之后,元素的地址就不再一样了。
Vector
- Vector没有隐式共享,operator[]不检查越界,at()才检查越界;
参考链接:https://blog.csdn.net/hai200501019/article/details/11713519
标签:cout,vecA,QVector,越界,vector,共享,隐式 来源: https://www.cnblogs.com/hik-wxy/p/14893489.html