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 ...
随机推荐
- 20个常用的Java程序块
1.字符串有整型的相互转换 String a = String.valueOf(2);//integer to numeric string Int i = Integer.parseInt(a);/ ...
- Java程序性能优化读书笔记(一):Java性能调优概述
程序性能的主要表现点: 执行速度:程序的反映是否迅速,响应时间是否足够短 内存分配:内存分配是否合理,是否过多地消耗内存或者存在内存泄漏 启动时间:程序从运行到可以正常处理业务需要花费多少时间 负载承 ...
- 蓝桥网试题 java 基础练习 查找整数
--------------------------------------------------------------------- 注意看清楚条件 别漏了 -1 -1 -1 --------- ...
- BOM之history对象
前面的话 history对象保存着用户上网的历史记录,从窗口被打开的那一刻算起.由于安全方面的考虑,开发人员无法得到用户浏览器的URL,但借由用户访问过的页面列表,可以在不知道实际URL的情况下实现后 ...
- node.js 的事件机制
昨天到今天, 又看了一边node 的事件模块, 觉得很神奇~ 分享一下 - -> 首先, 补充下对node 的理解: nodeJs 是一个单进程单线程应用程序, 但是通过事件和回调支持并发 ...
- MySQL性能优化方案
$stmt->execute(); // 绑定结果 $stmt->bind_result($username); // 移动游标 $stmt->fetch(); printf(&qu ...
- mybatis入门-框架原理
mybatis是什么 在说mybatis原理之前,我们有必要知道,mybatis到底是个什么东西.mybatis是一个持久层的框架.是一个不完全的ORM框架.因为它需要由程序员自己去写sql语句.但是 ...
- python书籍推荐
python书籍推荐列表: 技巧:关于如何在windows平台上行获取目录下的文件名称.(我的python书籍的位置E:\Python\Python_book) D:\>e: E:\>cd ...
- Java List集合特有方法程序用法
package Collection; /* Collection |--List:元素是有序的,元素可以重复.因为该集合体系有索引 | |--ArrayList:底层的数据结构使用的是数组结构 特点 ...
- JS作用域理解
1.JS解析步骤: a.预解析 将变量声明提升: 将函数声明及函数内容提升,可以理解成原来位置的函数在解析代码时已经提到代码初始位置: 遇到重名,只留下一个: 如有重名变量和函数,留下函数: 如有两个 ...