C++标准模板库(终极版)

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;	
}

猜你喜欢

转载自blog.csdn.net/zhao2chen3/article/details/88625476