码迷,mamicode.com
首页 > 其他好文 > 详细

QVector和vector的隐式共享

时间:2021-06-17 17:24:23      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:地址   log   const   速度   article   art   false   操作   blog   

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

QVector和vector的隐式共享

标签:地址   log   const   速度   article   art   false   操作   blog   

原文地址:https://www.cnblogs.com/hik-wxy/p/14893489.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!