C++STL的简单使用

#include <iostream>
#include <vector>
#include<deque>
#include <list>
#include<algorithm>
#include<functional>//函数对象
#include<iterator>

//容器适配器 代理关系 功能子集
#include<stack>
#include <queue>
using namespace std;

vector<vector<int>> 二维数组
vector<list<int>>
//在容器里面重复多次删除

//用迭代器打印函数
template<typename Container>
void showContainer(Container &con)
{
Container::iterator it = con.begin();
for (;it != con.end();++it)
{
cout<<*it<<" ";
}
cout<<endl;
}

//使用库函数
int main()
{

//建立一个int实例化的vector;
vector<int> vec;

插入十个随机数

for (int i = 0;i<10;i++)

{
vec.push_back(rand()%100);
}

对vec里面的元素进行排序
sort(vec.begin(),vec.end());

sort(vec.begin(),vec.end(),less<int>());
showContainer(vec);
sort(vec.begin(),vec.end(),greater<int>());
showContainer(vec);

查找vec里面的元素,找到以后删除
vector<int>::iterator it = find(vec.begin(),vec.end(),64);
if (it != vec.end())
{
vec.erase(it);
}
查找vec里面的元素,找第一个比50大的元素,找到以后删除
vector<int>::iterator it1 = find_if(vec.begin(),vec.end(),bind1st(greater<int>(),50));
if (it1 != vec.end())
{
cout<<*it1<<endl;
vec.erase(it1);
}

//新建一个对象,将vec里面的拷贝给vec2,清除vec
vector<int> vec2;
copy(vec.begin(),vec.end(),back_inserter(vec2));
showContainer(vec2);
vec.clear();
showContainer(vec);

//插入100个个位数,删除重复值
for (int i = 0;i<100;i++)
{
vec.push_back(rand()%10);
}
showContainer(vec);

vector<int>::iterator it3 = unique(vec.begin(),vec.end());
showContainer(vec);
vec.erase(it3,vec.end());
showContainer(vec);

//在元素每个偶数前加-1
vector<int>::iterator it4 = vec.begin();
for (;it4!= vec.end();++it4)
{
if (*it4 % 2 == 0)
{
int val = -1;
it4 = vec.insert(it4,val);
++it4;
}
}

自己实现一下删除重复值,切记在容器里重复多次删除 迭代器会失效

vector<int>::iterator it3=vec.begin();
vector<int>::iterator it5;
for ( it3=vec.begin();it3!=vec.end();++it3)
{
it5=it3+1;
while(it5!=vec.end())
{
if (*it5 == *it3)
{
it5 = vec.erase(it3);
}
else
{
++it5;
}
}

}

上一篇:WIN7 java7 环境变量配置


下一篇:Spring Boot 注解详解