vector name;
typename可以是任何基本类型,int ,double char
结构体类型,类类型。
甚至还可以是STL标准容器,如vector,queue,set,map
等等。
- 二维都可变的数组。
vector<vector > name;
- vector数组
vector v[100];
注意二者的区别。
- 通过下标
vector v;
v[0];
v[1];
……
v[n-1]; //n为数组元素个数
- 通过迭代器(iterator)
vector::iterator it;
it就相当于是vector<typename>::iterator
类型的变量。
可以用过*it
的方式来访问元素
begin()
和 end()
begin()获取vector元素的首地址,
end()获取末尾元素的下一个地址(遵循左闭右开的原则)
for(int i=0;i<5;i++){
vec.push_back(i);
}
vector::iterator it = vec.begin();
for(int i=0;i<5;i++){
printf(“%d\n”,*(it+i));
}
由此可见,vec[i]
与*(vec.begin()+i)
的等价的。
注意:在STL容器里只有vector
和string
支持v.begin()+整数
的写法,因为其他容器的存储结构并不是线性的。
- 迭代器与
++
和!=
运算符
注意不能写成it<vec.end()
只能写成不等于。
for(vector::iterator it=vec.begin();it!=vec.end();it++){
printf(“%d\n”,*it);
}
- (1)
push_back()
作用:在vector尾部添加一个元素,时间复杂度O(1);
- (2)
pop_back()
作用:删除vector尾部的一个元素,时间复杂度O(1);
-
(3)
size()
,获取vector中元素的个数,时间复杂度O(1),不过注意返回的是unsigne int
类型。 -
(4)
clear()
,清空所有元素,时间复杂度O(N)。 -
(5)
insert(it,x)
,向vector任意迭代器的位置,插入一个元素,时间复杂度O(N)。注意第一个参数是迭代器,而不是整数。
说明,被插入的地方的元素以及它后面的所有元素(如果有)顺次向后移动一位。
insert(vec.begin(),x) //在首部插入元素x;
insert(vec.end(),x) //在尾部添加元素x,相当于 push_back(x);
-
(6)
erase()
-
(i)
erase(it)
删除迭代器it处的元素。
for(int i=0;i<5;i++){
vec.push_back(i+1);
}
vec.erase(vec.begin()+3); //,下标为3,删除的是第4个元素
for(int i=0;i<vec.size();i++){
cout<<vec[i]<<endl;
}
1
2
3
5
- (ii)
erase(begin,last)
的所有元素。
删除迭代器**[begin,last)**处的元素。注意左闭右开。
erase(vec.begin(),vec.end()) //删除*(vec.begin)……*(vec.end()-1);
// 也就是删除所有的元素。
========================================================================
头文件
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Java开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
715619692692)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Java开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!