vector中
capacity是指最少要多少元素才会使容器重新分配,reserve()可以设置capacity值。
size是指容器中有多少个元素,resize()可以修改容器大小。
乍一看,如果没有没有使用reserve()的话,vector的size和capacity应该是相同的,但是不见得。
代码1

int m,n;
n=obstacleGrid.capacity();
m=obstacleGrid[0].capacity();

代码2

int m,n;
n=obstacleGrid.size();
m=obstacleGrid[0].size();

我在一次刷leetcode的不同路径2时,发现了问题,虽然代码1和代码2中m,n的值相同,但后续使用m,n访问vector数组的时候,使用代码1报了错。

Line 922: Char 34: runtime error: reference binding to misaligned address 0xbebebebebebebebe for type 'value_type', which requires 4 byte alignment (stl_vector.h)
0xbebebebebebebebe: note: pointer points here
<memory cannot be printed>

搜索之后说是数组越界,我反复检查并没有发现越界,而且代码1和代码2的m,n也是相同的。查询了两个函数的定义:

_NODISCARD size_type capacity() const noexcept{  // return current length of allocated storagereturn (static_cast<size_type>(this->_Myend() - this->_Myfirst()));}
_NODISCARD size_type size() const noexcept{  // return length of sequencereturn (static_cast<size_type>(this->_Mylast() - this->_Myfirst()));}

但是也没有发现什么原因。。很困惑,因为我并没有使用如reserve()这种函数来修改capacity值。虽然没找到原因,但是以后使用的时候更留心了,如果只是取数组长度的话还是建议用size()就好。

追加:
https://blog.csdn.net/sim0hayha/article/details/79050655
这个博客得知,即使不使用reserve(),capacity在存储不够的时候也会自动的扩充。

C++中vector的capacity和size的区别相关推荐

  1. [转载] C++ STL之 vector的capacity和size属性区别

    参考链接: C++ Vector中capacity与size vector中这两个属性很容易弄混淆. size是当前vector容器真实占用的大小,也就是容器当前拥有多少个容器. capacity是指 ...

  2. C++中vector容器和普通数组的区别

    参考网址:https://zhuanlan.zhihu.com/p/490485119

  3. [转贴]从零开始学C++之STL(二):实现一个简单容器模板类Vec(模仿VC6.0 中 vector 的实现、vector 的容量capacity 增长问题)...

    首先,vector 在VC 2008 中的实现比较复杂,虽然vector 的声明跟VC6.0 是一致的,如下: C++ Code  1 2   template < class _Ty, cla ...

  4. C++中vector的使用

    向量std::vector是一种对象实体,能够容纳许多各种类型相同的元素,包括用户自定义的类,因此又被称为序列容器.与string相同,vector同属于STL(Standard Template L ...

  5. c++中vector的用法详解

    c++中vector的用法详解 vector(向量): C++中的一种数据结构,确切的说是一个类.它相当于一个动态的数组,当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间 ...

  6. c++ vector 赋值_C++中vector用法

    vector是什么 vector是C++标准模板库(STL-Standard Template Library)中的概念内容,它是一个能够操作多种数据结构和算法的模板类和函数库,是一个封装了动态大小数 ...

  7. C++中 Vector使用方法

    1. 一维vector: 1.1 vector 说明 vector是向量类型,可以容纳许多类型的数据,因此也被称为容器 (可以理解为动态数组,是封装好了的类) 进行vector操作前应添加头文件#in ...

  8. c++中vector用法(涵盖算法题中知识点)

    文章目录 1. vector 1.1 vector的说明 1.2 特别注意 1.3 vector实例 2. vector 创建与初始化 3.vector 常用内置函数 4. vector 中元素的访问 ...

  9. 关于STL中vector容器的一些总结

    第一个总结来自于http://www.jb51.net/article/41648.htm,第二个来自于http://www.cppblog.com/totti1006/archive/2009/09 ...

最新文章

  1. 远场语音识别错误率降低30%,百度提基于复数CNN网络的新技术
  2. 工业相机帧率与曝光时间的关系
  3. 利用追赶法来求解方程Ax=b的C++程序
  4. 每天一个前端名词——Babel
  5. OpenResty简介
  6. 什么是反射?反射的用法?实例说明。
  7. 转【查看oracle数据库的连接数以及用户 】
  8. Android 11 限制反射,如何破解?
  9. 【渝粤教育】国家开放大学2019年春季 776员工招聘与管理 参考试题
  10. c语言中通过分隔符取字符串,C语言切割多层字符串(strtok_r strtok使用方法)
  11. jQuery----选择器
  12. LeetCode 91. 解码方法
  13. 在Linux上使用logwatch分析监控日志文件
  14. 【C++】运算符重载关于const的分析(超详细)
  15. 同济大学高等数学第7版视频
  16. sqlhelper java_java版sqlhelper
  17. Spring入门到精通:第二章 IOC容器(XML方式):7.IOC容器Bean管理XML方式-bean作用域
  18. java电话号码生成器
  19. AWAY3D 搜搜街景原理 谷歌街景原理 FLASH实现 百度景点原理 球状天空盒模型 鱼眼相机...
  20. 2022牛客寒假训练营1-K冒险公社

热门文章

  1. python语言怎么学-怎么学Python语言呢?粤嵌Python学习路线入门
  2. requests库怎么安装在python中-python安装requests库的实例代码
  3. python处理excel字典-使用Python代码处理Excel
  4. python画图哆啦a梦-Python小白绘图 哆唻A梦 turtle真的很强大!
  5. python3.6.1安装教程-ipython安装(python3.6.1)(转载)
  6. python手册中文版apk-用 Python 完成 Android apk 的编译打包
  7. 编程语言python特点-十种常用编程语言特点
  8. python九九乘法口诀表-Python 九九乘法表
  9. python好学吗 小木虫-25行Python代码完成人脸识别
  10. 零基础学python全彩版实战答案-零基础学Python(全彩版)