C++vector

Posted by 川川的博客 on April 27, 2025

Vector

三种遍历


迭代器
普通正向迭代
iterator
只读
const_iterator
反向迭代
reverse_iterator     rit.rbegin(), rit.rend();



resize(n,char ch)  修改size大小为n,且空数据填充为ch
reserve() 修改capacity空间大小,就不用扩容了

vector<int>::iteator pos = find(v.begin(),v.end(),5);

sort()

迭代器失效

对于vector insert()和erase()会导致迭代器位置不对,所以失效

带增容的接口都有可能导致迭代器失效

删除容器中所有偶数,erase(it)也会导致之后,也会出现it失效

//解决办法

it = v.erase(it);	//erase()会返回它的下一个位置的迭代器

vector实现









reserve(n)

memcpy(tmp,_strat,sizeof(T)*size());

resize()


深浅拷贝问题

vector < string > v;


memcpy(tmp,_start,sizeof(T)*sz); //自定义类型,浅拷贝	

练习

只出现一次的数字 https://leetcode.cn/problems/single-number/description/

只出现一次的数字 II

只出现一次的数字 III

杨辉三角

vector没有 ‘\0’,string才有 ‘\0’,这是他们的区别

memxxx 是按字节给你处理

00000000 00000000 00000000 00000000

00000001 00000001 00000001 00000001

image-20250606173233682