vector表示的是可变大小的数组,但是其类型不确定,因为是模板类。所以其尾部没有\0,也就是不需要空一个位置存储\0。

其主要由3个指针控制其数组:

_start:指向其数组的首元素。

_finish:指向其数组有效元素的后一位,也就是size=_finish-_start.也相当于指向的是size位置。

_endofstorage:指向的是数组可以存储有效元素的后一位,也就是capacity=_endofstorage-_start;

也就是相当于指向的是capacity。

其主要操作是通过迭代器来实现的。

insert:再pos位置前面插入一个数据

erase:删除pos位置的数据,并返回删除元素的下一个元素位置。

vector里面没有find函数,如果想要使用find,得在algorithm库里面,find(v.begin(),v.end(),x);

如果找到返回位置,否则返回end();


迭代器失效问题:

主要由2个方面:

1、扩容:当迭代器指向了某个空间位置时,突然使用push_back 或insert等,使原来空间发生变化时,这时迭代器会失效。(也就是it是指向的旧内存空间被delete,而it还指向其旧空间)

2、erase:当删除迭代器所指元素时,此时的it会失效。需要重新赋值。

解决迭代器失效的办法就是将其重新赋值。

memcpy是浅拷贝,当拷贝自定义类型时,没有错,但是拷贝自定义类型时,就会出错。




©著作权归作者所有:来自51CTO博客作者我要进大厂的原创作品,如需转载,请注明出处,否则将追究法律责任

每一份赞赏源于懂得

赞赏

0人进行了赞赏支持

更多相关文章

  1. 2021-04-03:给定两个字符串str1和str2,想把str2整体插入到str1中的
  2. int|char数组在sizeof和strlen函数中的应用以及指针的应用
  3. 【JS基础入门】JavaScript基础之值与引用传递、模板字面量、解构
  4. 4-2(vector)
  5. 实例ES6演示数组,对象,传参解构; 实例演示访问器属性的get,set操作
  6. js的解构
  7. 如何在 Apache Hive 中解析 Json 数组
  8. Go语言学习5-切片类型
  9. Go语言学习4-数组类型

随机推荐

  1. 用python解析word文件(二):table
  2. python selenium-webdriver 定位frame中
  3. 恺撒密码 I Python实现
  4. Python学习之——Tcp/ip基础/IP地址/DNS/
  5. Python实现二叉树的左中右序遍历
  6. 检查 NaN 数据值 (C/C++/Python 实现)
  7. Python之高级特性
  8. 用Python学《微积分B》(有理式与简单无理
  9. python中的类与方法
  10. 在两台服务器上有效地在两个Django应用程