发布时间:2023-05-21 10:00
ฅ(๑˙o˙๑)ฅ 大家好, 欢迎大家光临我的博客:面向阿尼亚学习
算法学习笔记系列持续更新中~
在 C++ 中,要使用STL中的vector,需要先调用头文件#include < vector >
vector 是一个十分有用的容器。它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。
vector(变长数组),倍增的思想,支持比较运算(按字典序)
vector <int> a; 定义:一个vector数组a
vector <int> a(10); 定义:一个长度为10的vector数组a
vector <int> a(10,3); 定义:一个长度为10的vector数组a,并且所有元素都为3
size(); 返回元素个数
empty(); 判断a是否为空,空则返回true,非空则返回false
clear(); 清空
front(); 返回vector的第一个数
back(); 返回vector的最后一个数
push_back(); 向vector的最后插入一个数
pop_back(); 把vector的最后一个数删掉
begin(); vector的第0个数
end(); vector的最后一个的数的后面一个数
倍增的思想:
系统为某一程序分配空间是,所需时间,与空间大小无关,与申请次数有关
代码样例
#include
#include
using namespace std;
int main () {
vector<int> v;//定义一个vector v
for(int i=0; i<5; i++) {
v.push_back(i);
}
//返回元素个数
cout<<v.size()<<endl;
//返回vector的第一个数
cout<<v.front()<<endl;
//返回vector的最后一个数
cout<<v.back()<<endl;
for(auto x : v) {//遍历输出
cout << x << \" \";
}
cout<<endl;
//清除所有元素
v.clear();
cout<<v.size()<<endl;
return 0;
}
输出结果
5
0
4
0 1 2 3 4
0
结合算法erase() reverse()
#include< algorithm>
a.erase(p)//从a中删除迭代器p指定的元素,p必须指向c中的一个真实元素,不能是最后一个元素end()
a.erase(b,e)//从a中删除迭代器对b和e所表示的范围中的元素,返回e
vector<int> a={1,2,3,4,5};
reverse(a.begin(),a.end());//a的值为5,4,3,2,1 倒置
假设有个vector <int> a;
第一种:
for(int i = 0;i < a .size();i ++)
cout<<a[i]<<\" \";
第二种:
for(vector <int>::iterator i = a. begin();i != a. end();i ++)
cout<<*i<<\" \"; vector <int>::iterator可以写为auto
第三种:
for(auto x : a) cout<<x<<\" \";//C++11的新语法