算法笔记--标准模板库STL--Vector
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了算法笔记--标准模板库STL--Vector,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3450字,纯文字阅读大概需要5分钟。
内容图文
![算法笔记--标准模板库STL--Vector](/upload/InfoBanner/zyjiaocheng/637/7a4a68c03c1a45449c07b7aa2e9d7f54.jpg)
Vector的常见用法详解
Vector 翻译为向量,是长度可根据需要而自动改变的数组
头文件
#include<vector>
using namespace std;
vector定义
单独一个vector:相当于一维数组name[SIZE]
vector<typename> name;
vector<int> name; // 基本类型
vector<double> name;
vector<char> name;
vector<node> name; // 结构体类型
vector<vector<int>> name; // STL容器, 这种的vector数组是两个维度都可变的
vector数组:一维长度已经固定为arraySize
,另一个维度是可变长度的
vector<typename> ArrayName[arraySize];
vector<int> vi[100];
这样ArrayName[0]
~ ArrayName[arraySize - 1]
中每一个都是一个vector容器
Vector容器内元素的访问
通过下标访问
? 和访问普通的数组是一样,对一个定义为vector<typename> vi
的vector容器来说,直接
访问vi[index]
即可(如可vi[0]
)。当然,这里下标是从0到vi.size()-1
,访问这个范围外的元素可能会运行出错。
通过迭代器访问
迭代器iterator
相当于类似指针的东西,其定义为:
vector<typename>::iterator it; // it就是一个vector<typename>::iterator型的变量
// typename就是定义vector时填写的类型
vector<int>::iterator it;
vector<double>::iterator it;
有了迭代器it
,就可以通过*it
来访问vector里面的元素
vector<int> vi;
for(int i = 1; i <= 5; i++){ // 循环完毕后vi中元素为1 2 3 4 5
vi.push_back(i); // push_back(i)在vi的末尾添加元素i,即依次添加1 2 3 4 5
}
通过类似下标和指针数组的方式来访问容器内的元素:
#include<cstdio>
#include<vector>
using namespace std;
int main(){
vector<int> vi;
for(int i = 1; i <= 5; i++){
vi.push_back(i);
}
// vi.begin()为取vi的首元素地址,而it指向这个地址
vector<int>::iterator it = vi.begin();
for(int i = 0; i < 5; i++)
printf("%d ", *(it + i)); // 输出vi[i]
return 0;
}
vi[i]
和*(vi.begin() + i)
是等价的
1??vi.begin()
是取vi
的首元素地址
2??vi.end()
是取vi
的尾元素地址的下一个地址
3??迭代器还提供了自加操作和自减操作,如:++it
和it++
#include<cstdio>
#include<vector>
using namespace std;
int main(){
vector<int> vi;
for(int i = 1; i <= 5; i++){
vi.push_back(i);
}
// vector的迭代器不支持it < vi.end()写法,因此循环条件只能用it != vi.end()
for(vector<int>::iterator it = vi.begin(); it != vi.end(); it++){
printf("%d ", *it);
}
return 0;
}
vector常用函数
- push_back( )
push_back(x) 就是在vector后面添加一个元素x,时间复杂度为O(1)
- pop_back( )
pop_back( ) 用以删除vector的尾元素,时间复杂度为O(1)
#include<cstdio>
#include<vector>
using namespace std;
int main(){
vector<int> vi;
for(int i = 1; i <= 5; i++){
vi.push_back(i);
}
for(int i = 0; i < vi.size(); i++){
printf("%d ", vi[i]);
}
printf("\n");
vi.pop_back();
for(int i = 0; i < vi.size(); i++){
printf("%d ", vi[i]);
}
return 0;
}
1 2 3 4 5
1 2 3 4
- size( )
size( ) 用来获取vector中元素的个数,时间复杂度为O(1)
size( ) 返回的是 unsigned 类型,一般来说 %d 不会出现很多问题
#include<cstdio>
#include<vector>
using namespace std;
int main(){
vector<int> vi;
for(int i = 1; i <= 5; i++){
vi.push_back(i);
}
printf("%d ", vi.size());
return 0;
}
- clear( )
clear( ) 用来清空vector中的所有元素,时间复杂度为O(N)
#include<cstdio>
#include<vector>
using namespace std;
int main(){
vector<int> vi;
for(int i = 1; i <= 5; i++){
vi.push_back(i);
}
printf("%d ", vi.size());
vi.clear(); // 清空操作
printf("%d ", vi.size());
return 0;
}
- insert( )
insert(it, x) 用来向vector的任意迭代器it处插入一个元素x,时间复杂度为O(N)
#include<cstdio>
#include<vector>
using namespace std;
int main(){
vector<int> vi;
for(int i = 1; i <= 5; i++){
vi.push_back(i);
}
vi.insert(vi.begin() + 3, -1); // 插入操作
for(int i = 0; i < vi.size(); i++)
printf("%d ", *(vi.begin() + i));
return 0;
}
- erase( )
标签:,,,,,,,, 来源: https://www.cnblogs.com/zgqcn/p/12576493.html
内容总结
以上是互联网集市为您收集整理的算法笔记--标准模板库STL--Vector全部内容,希望文章能够帮你解决算法笔记--标准模板库STL--Vector所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。