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

上一篇:C# HttpPost 【ContentType:multipart/form-data】表单提交数据方法


下一篇:Qt-注意隐式共享机制