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 ...
随机推荐
- LCD驱动移植在在mini2440(linux2.6.29)和FS4412(linux3.14.78)上实现对比(deep dive)
1.Linux帧缓冲子系统 帧缓冲(FrameBuffer)是Linux为显示设备提供的一个接口,用户可以将帧缓冲看成是显示内存的一种映像,将其映射到进程地址空间之后,就可以直接进行读写操作,而写操作 ...
- spring 注解配置
要在spring mvc中使用注解需要在*-servlet.xml文件中添加 <mvc:annotation-driver />配置 这个配置会创建DefaultAnnotationHan ...
- Professional C# 6 and .NET Core 1.0 - 37 ADO.NET
本文内容为转载,重新排版以供学习研究.如有侵权,请联系作者删除. 转载请注明本文出处:Professional C# 6 and .NET Core 1.0 - 37 ADO.NET -------- ...
- webservice_模拟报文测试
一.WebService测试小工具STORM 二.利用MyEclipse的WebService视图调用webservice Ø 除了客户端生成代码编写程序调用之外.还可以用MyEclipse提供 ...
- esri-leaflet入门教程(2)-地图的HelloWorld
esri-leaflet入门教程(2)-地图的HelloWorld by 李远祥 常言道"君子性非异也,善假于物也".这句话在IT界同样也适用,只不过IT界有更为时髦的说法:&qu ...
- gradient的几点认识转载
线性渐变(Linear Gradients)- 向下/向上/向左/向右/对角方向 径向渐变(Radial Gradients)- 由它们的中心定义 在这里主要讲线性渐变谷歌浏览器中:(1)backgr ...
- HDU 3785 寻找大富翁
寻找大富翁 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- matlab 子函数的使用
本文参考了该篇博客:http://www.cnblogs.com/MarshallL/p/4048846.html 对其进行学习,为我所用吧. 一. 在matlab的函数定义中,如果函数如果函数较长或 ...
- Java语言基本语法(一)————关键字&标识符(Java语言标识符命名规范&Java语言的包名、类名、接口名、变量名、函数名、常量名命名规则 )
一.关键字 关键字的定义和特点 定义:被Java语言赋予特殊含义,用做专门用途的字符串(单词). 特点:关键字中所有字母均为小写 下面列举一些常用的关键字. 用于定义数据类型的关键字:byte.sho ...
- bootstrap 预定义样式风格
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...