QVector和vector的隱式共享
阿新 • • 發佈:2021-06-17
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