vector(向量)
本质:对数组的封装,大小可以随元素数量变化
特点:读取能在常数时间完成
初始化
vector<int> v1; //vector保存类型为int的对象。默认构造函数v1为空
vector<string> v2(v1); //v2是v1的一个副本
vector<int>v3(n,i); //v3包含n个值为i的元素
vector<int>v4(n); //v4包含有值初始化元素的n个副本
常用函数
empty() | 判断向量是否为空 |
begin() | 返回向量迭代器首元素 |
end() | 返回向量迭代器末元素的下一个元素 |
clear() | 清空向量 |
front() | 第一个数据 |
back() | 最后一个数据 |
size() | 获得向量中数据大小 |
push_back(elem) | 将数据插入向量尾 |
pop_back() | 删除向量尾部数据 |
实际应用
#include<iostream>
#include<vector>
using namespace std;
int main(){
vector<int> vec;
vec.push_back(10);
vec.pop_back();
cout<<vec.size();//0
return 0;
}
遍历方法
A
#include<iostream>
#include<vector>
using namespace std;
int main(){
vector<int> vec;
vec.push_back(10);
vec.push_back(11);
vec.push_back(12);
for(int i=0;i<vec.size();i++)
cout<<vec[i]<<endl;
return 0;
}
B使用迭代器iterator
#include<iostream>
#include<vector>
using namespace std;
int main(){
vector <string> vec;
vec.push_back("hello");
vector<string>::iterator citer=vec.begin();
for(citer=vec.begin();citer!=vec.end();citer++){
cout<<*citer<<endl;
}
for(;citer!=vec.end();citer++){
cout<<*citer<<endl;//*citer迭代器对应的元素
}
return 0;
}
list链表:插入速度快
list的遍历:只能用迭代器
#include<iostream>
#include<list>
using namespace std;
int main() {
list<int> l;
l.push_back(2);
l.push_back(4);
l.push_back(6);
l.push_back(9);
list<int>::iterator itor=l.begin();
for(;itor!=l.end();itor++){
cout<<*itor<<endl;
}
return 0;
}
map:键值对 ,根据键找到值
下标索引遍历
map<int,string> m;
pair<int,string>p1(10,"shanghai");//pair可以作为map的内置元素,与map的类型要对应
pair<int,string>p2(20,"beijing");
m.insert(p1);//不能用push_back
m.insert(p2);
cout<<m[10]<<endl;//根据键找到值 shamghai
cout<<m[20]<<endl;//beijing
map与pair https://blog.csdn.net/daaikuaichuan/article/details/79475973
#include<iostream>
#include<map>
using namespace std;
int main() {
map<string,string> m;
pair<string,string> p1("S","shanghai");
pair<string,string> p2("B","beijing");
m.insert(p1);
m.insert(p2);
cout<<m["S"]<<endl;//m[]此处可以为字符串
cout<<m["B"]<<endl;
return 0;
}
迭代器遍历
#include<iostream>
#include<map>
using namespace std;
int main() {
map<int,string> m;
pair<int,string> p1(1,"hello");
pair<int,string> p2(2,"world");
m.insert(p1);
m.insert(p2);
map<int,string>::iterator itor=m.begin();
for(;itor!=m.end();itor++){
cout<<itor->first<<endl;//注意map是键值对,因此要用->first
cout<<itor->second<<endl;
}
return 0;
}