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;
}
}
}
C++STL的简单使用的更多相关文章
- 标准C++中的STL容器类简单介绍
SGI -- Silicon Graphics[Computer System] Inc.硅图[计算机系统]公司. STL -- Standard Template Library 标准模板库. ...
- STL vector简单用法
初涉c++,此为<算法笔记>中的内容,有待个人理解完善. vector vector翻译为向量,叫做"变长数组"更容易理解. 头文件:#include<vecto ...
- STL版本号简单介绍
说明:本文仅供学习交流.转载请标明出处.欢迎转载! 本文的參考文献为:<STL源代码剖析>侯捷 (1)HP STL:全部STL的祖先版本号,由C++之父Alexander S ...
- C++STL vector简单使用练习1
#include <iostream> #include <vector> #include <numeric> using namespace std; int ...
- STL map简单使用
#include <map> #include <iostream> //pair使用头文件iostream using namespace std; int main() { ...
- STL set简单用法
set的常见用法详解 set翻译为集合,是一个内部自动有序并且不含重复元素的容器. 可以用于去掉重复元素,或者元素过大,或者不能散列的情况,set只保留元素本身而不考虑它的个数. 头文件:#inclu ...
- 模板与STL学习简单的笔记
一.如何进行泛型编程 C/C++是一种静态编程语言,必须需要把代码翻译成可执行的二进制可执行程序然后再运行,一旦编译好之后就不能再变了(数据类型也就必须确定下无法更改,因此要为每一种数据类型编写一份算 ...
- C++中STL中简单的Vector的实现
该vector只能容纳标准库中string类, 直接上代码了,StrVec.h文件内容为: #ifndef STRVEC_H #define STRVEC_H #include<iostream ...
- Open Cascade Data Exchange STL
Open Cascade Data Exchange STL eryar@163.com 摘要Abstract:介绍了三维数据交换格式STL的组成,以及Open Cascade中对STL的读写.并将O ...
随机推荐
- [html5] 学习笔记-SVG
1.SVG介绍:什么是SVG? 1)SVG指可伸缩矢量图形(Scalable Vector Graphics) 2)SVG用来定义用于网络的基于矢量的图形 3)SVG使用XML格式定义图形 4)SVG ...
- 学习计划(一)——JavaScript
一:与前端之缘 大一时除了上课和社团外不知道要学点什么,但是又不想睡觉打游戏,常常就是啥都想学,photoshop,premiere,After Effects都学,但始终没有明确的目标. 大二时一直 ...
- oracle_decode、case
Case具有两种格式.简单Case函数和Case搜索函数. --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END ...
- cmake的四个命令:add_compile_options、add_definitions、target_compile_definitions、build_command
cmake的四个命令:add_compile_options.add_definitions.target_compile_definitions.build_command add_compile_ ...
- SQL中如何使用EXISTS替代IN
原创作品,可以转载,但是请标注出处地址http://www.cnblogs.com/V1haoge/p/6385312.html 我们在程序中一般在做SQL优化的时候讲究使用EXISTS带替代IN的做 ...
- Windows下搭建HTTP/HTTPS服务器及测试过程
1 安装Apache http://www.apachehaus.com/cgi-bin/download.plx 选择合适的版本下载 本次下载的是 Apache 2.4.x VC14 Apache版 ...
- CentOS安装Git服务器
1.安装Git $ yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel $ yum ...
- ajaxFileUpload.js 无刷新上传图片,支持多个参数同时上传,支持 ie6-ie10
/* 131108-xxj-ajaxFileUpload.js 无刷新上传图片 jquery 插件,支持 ie6-ie10 依赖:jquery-1.6.1.min.js 主方法:ajaxFileUpl ...
- 如何用Visual Studio 2008 写汇编程序?
如何用Visual Studio 2008写汇编程序? 最近在上夏季小学期,在学汇编语言,关于用什么编辑环境一直很纠结.很想找到一个比较好的IDE,但是试了几个像RadASM之类的,发现还不是很满意. ...
- jquery序列化form表单
在开发中有时需要在js中提交form表单数据,就需要将form表单进行序列化. jquery提供的serialize方法能够实现. $("#searchForm").seriali ...