不疯不魔,难以成佛。
学完了vector,接下来就开始学习其他容器了。这些都是C++ STL中的比较好用的方法,让你的编程变得简单。
在这几天的使用来看,自认为迭代器是为了访问容器的元素。
初始化: < 容器类型 >< 数据类型 > :: iterator <名称>
例如:vector<int>::iterator iter; //这就定义了一个可以访问vector int型数据的 名为iter的迭代器
还有如下的迭代器初始化方法:
下面就以一个实例来学习迭代器的使用方法。
#include<iostream>
#include<vector>
using namespace std;
int main()
{
int a[10]={1,2,3,4,5,6,7,8,9,0};
vector<int> ve(a,a+10);
vector<int>::iterator it;
//正向迭代器与反向迭代器
for(it = ve.begin();it!=ve.end();++it)//听说 ++i 比 i++执行速度快
cout<<(*ve)<<endl;
for(it = ve.rbegin();it!=ve.rend();++it)//听说 ++i 比 i++执行速度快
cout<<(*ve)<<endl;
return 0;
}
还有操作迭代器的三个函数
包含于头文件< algorithm >
头文件< set >
其实,只要掌握了一个容器的操作方法,其他容器的方法都可以类比。
值得注意一点的是:集合内的容器不能重复,并且他会默认从小到大排序。
#include<set>
set<int> st;
st.insert() //插入元素
st.begin() // 返回第一个元素的迭代器
st.end() //返回最后一个元素之后的迭代器,不是最后一个迭代器
stclear() //清空所有元素
st.count() //判断元素是否存在,返回bool类型
st.empty() //判断是否为空 ,空则true
st.erase() //删除集合中元素
st.find() //返回一个被查找到的元素的迭代器,没有则返回end(),find(开始地址,尾地址,查找元素)
st.size() //集合的大小
头文件< stack >
//初始化
stack<int> a;
a.push() // 压入栈
a.pop() //移除最顶端元素
a.top() //访问最顶端元素
a.size() //栈的大小
a.empty() //判断是否为空
头文件< queue >
queue<int > q;
q.push() //加入对列
q.front() //队首元素
q.pop() //移除队首元素
q.empty() //判断是否为空
q.size() //队列大小
头文件< map >
map<int,int> mp;
mp.clear() //清空mp
mp.size() //mp大小
mp.empty() //判断是否为空
mp.count(key) //判断key是否存在
map<int,int >::iterator it;
mp[0] =4;
mp[1] = 2;
mp[2] = 3;
it = mp.find(1) //key,返回一个地址
(*it).first() //返回所指地址的key值
(*it).second() //返回所指地址的value值
mp.insert(pair<int,int>(4,5)) //插入键值对