1. 程式人生 > 其它 >QVector和vector的隱式共享

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