知识点总结——STL相关(持续补充)
---恢复内容开始---
C++ STL 与ACM竞赛相关的应用
1、vector
vector是动态数组,可以理解为是能够根据需要随时申请内存的动态数组。
常用操作如下:
- 容量
- vec.size() 向量大小
- vec.empty() 向量判空 (如果为空==true、不为空==false)
- 修改
- vec.push_back() 向向量末尾添加一个元素
- vec.pop_back() 删除向量末尾元素
- vec.insert() 向向量中任意位置插入元素
- vec.erase() 删除任意位置元素
- vec.swap(,) 交换任意两个位置的向量
- vec.clear() 清空向量元素
- 迭代器
- vec.begin() 开始指针
- vec.end() 末尾指针
- 元素访问
- vec[1],vec[2] 下标直接访问
- vec.front() 访问第一个元素
- vec.back() 访问最后一个元素
示例:
#include <bits/stdc++.h>
using namespace std; vector<int>v;///声明部分
int main()
{
v.push_back();
v.push_back();
v.push_back();
v.push_back();
v.push_back();
v.push_back();
v.push_back();///插入元素
if(!v.empty())///判断是否为空
{
v.pop_back();///3 出
v.pop_back();///1 出
v.pop_back();///2 出
}
///迭代器的用法
vector <int> :: iterator it;
for(it=v.begin();it != v.end(); it++)///遍历元素
{
cout<<*it<<endl;
}
v.insert(it,,);///vector 后面会输出 4个0
///插入的位置取决于指针的位置
for(it=v.begin();it != v.end(); it++)///遍历元素
{
cout<<*it<<endl;
}
}
2、set和multiset
set顾名思义就是集合,里面没有重复的元素;但multiset可以有重复的元素,并且能够自动的从小到大排序
常用操作如下:
- 大小、判空
- s.size() 返回元素个数
- s.empty() 判断是否为空
- 增加、删除函数
- s.insert() 向集合内插入元素
- s.erase() 删除集合内有确定值的元素
- 迭代器
- iterator insert(iterator it,x):在迭代器it处插入元素x
- iterator erase(iterator it):删除迭代器指针it处元素
- iterator erase(iterator first,iterator last):删除[first, last)之间元素
- iterator begin():返回首元素的迭代器指针
- iterator end():返回尾元素的迭代器指针
- reverse_iterator rbegin():返回尾元素的逆向迭代器指针 (即最后一个)
- reverse_iterator rend():返回首元素前一个位置的迭代器指针
示例
为了更好的展示STL中的这个功能,我打算在这里放一道题
UVa 11136
题目大意:超市抽奖,找到每天消费最多的和消费最少的,拿出来给他们奖励,奖励就是消费之差。
下面是代码
#include <bits/stdc++.h>
using namespace std;
int main()
{
long long maxx,minn,sum; ///根据题目要求要用long long
int k,p,q;
multiset<int >s;
int n;
while(scanf("%d",&n) && n)
{
sum=;
s.clear();///在一次开始之前需要清空multiset
cin>>k;
while(k--)
{
cin>>p;
for(int i=;i<p;i++)
{
cin>>q;
s.insert(q);///multiset的插入操作
}
///multiset 自动排序
minn=*(s.begin()); ///找到最小的(可以重复)
maxx=*(s.rbegin()); ///反序查找第一个,也就是最后一个
///s.end() 表示的是最后一个的下一个 sum+= maxx-minn; s.erase(s.find(maxx)); ///s.erase() 括号里面若是值,会把所有相同重复的都删掉
s.erase(s.find(minn)); ///s.find () 若有,只返回一个值
}
cout<<sum<<endl;
}
}
---恢复内容开始---
C++ STL 与ACM竞赛相关的应用
1、vector
vector是动态数组,可以理解为是能够根据需要随时申请内存的动态数组。
常用操作如下:
- 容量
- vec.size() 向量大小
- vec.empty() 向量判空 (如果为空==true、不为空==false)
- 修改
- vec.push_back() 向向量末尾添加一个元素
- vec.pop_back() 删除向量末尾元素
- vec.insert() 向向量中任意位置插入元素
- vec.erase() 删除任意位置元素
- vec.swap(,) 交换任意两个位置的向量
- vec.clear() 清空向量元素
- 迭代器
- vec.begin() 开始指针
- vec.end() 末尾指针
- 元素访问
- vec[1],vec[2] 下标直接访问
- vec.front() 访问第一个元素
- vec.back() 访问最后一个元素
示例:
#include <bits/stdc++.h>
using namespace std; vector<int>v;///声明部分
int main()
{
v.push_back();
v.push_back();
v.push_back();
v.push_back();
v.push_back();
v.push_back();
v.push_back();///插入元素
if(!v.empty())///判断是否为空
{
v.pop_back();///3 出
v.pop_back();///1 出
v.pop_back();///2 出
}
///迭代器的用法
vector <int> :: iterator it;
for(it=v.begin();it != v.end(); it++)///遍历元素
{
cout<<*it<<endl;
}
v.insert(it,,);///vector 后面会输出 4个0
///插入的位置取决于指针的位置
for(it=v.begin();it != v.end(); it++)///遍历元素
{
cout<<*it<<endl;
}
}
2、set和multiset
set顾名思义就是集合,里面没有重复的元素;但multiset可以有重复的元素,并且能够自动的从小到大排序
常用操作如下:
- 大小、判空
- s.size() 返回元素个数
- s.empty() 判断是否为空
- 增加、删除函数
- s.insert() 向集合内插入元素
- s.erase() 删除集合内有确定值的元素
- 迭代器
- iterator insert(iterator it,x):在迭代器it处插入元素x
- iterator erase(iterator it):删除迭代器指针it处元素
- iterator erase(iterator first,iterator last):删除[first, last)之间元素
- iterator begin():返回首元素的迭代器指针
- iterator end():返回尾元素的迭代器指针
- reverse_iterator rbegin():返回尾元素的逆向迭代器指针 (即最后一个)
- reverse_iterator rend():返回首元素前一个位置的迭代器指针
示例
为了更好的展示STL中的这个功能,我打算在这里放一道题
UVa 11136
题目大意:超市抽奖,找到每天消费最多的和消费最少的,拿出来给他们奖励,奖励就是消费之差。
下面是代码
#include <bits/stdc++.h>
using namespace std;
int main()
{
long long maxx,minn,sum; ///根据题目要求要用long long
int k,p,q;
multiset<int >s;
int n;
while(scanf("%d",&n) && n)
{
sum=;
s.clear();///在一次开始之前需要清空multiset
cin>>k;
while(k--)
{
cin>>p;
for(int i=;i<p;i++)
{
cin>>q;
s.insert(q);///multiset的插入操作
}
///multiset 自动排序
minn=*(s.begin()); ///找到最小的(可以重复)
maxx=*(s.rbegin()); ///反序查找第一个,也就是最后一个
///s.end() 表示的是最后一个的下一个 sum+= maxx-minn; s.erase(s.find(maxx)); ///s.erase() 括号里面若是值,会把所有相同重复的都删掉
s.erase(s.find(minn)); ///s.find () 若有,只返回一个值
}
cout<<sum<<endl;
}
}
知识点总结——STL相关(持续补充)的更多相关文章
- 利用redis实现分布式锁知识点总结及相关改进
利用redis实现分布式锁知识点总结及相关改进 先上原文,本文只为总结及对相关内容的质疑并提出若干意见,原文内容更详细https://www.cnblogs.com/linjiqin/p/800383 ...
- [20190329]探究sql语句相关mutexes补充2.txt
[20190329]探究sql语句相关mutexes补充2.txt --//昨天测试sql语句相关mutexes,看看如果出现多个子光标的情况. 1.环境:SCOTT@book> @ ver1P ...
- 侯捷STL学习(12)--STL相关内容hash+tuple
layout: post title: 侯捷STL学习(12) date: 2017-08-01 tag: 侯捷STL --- 第四讲 STL相关的内容 Hash Function 将hash函数封装 ...
- phpstorm 工具使用技巧(持续补充中。。。)
phpstorm 工具使用技巧(持续补充中...) 一.phpstorm大小写切换 1.选择要转换的目标字符串: //普通商家,普通折扣默认值'COMMON_DISCOUNT'=>10.00, ...
- CSS琐碎知识点(持续补充)
一.字体单位,pt?px?em?rem? pt:磅,一种固定长度的绝对的度量单位,是能够使用测量设备测得的长度,印刷业上经常使用,一般用于页面打印排版. px:屏幕设备上能显示出的最小的一个物理点,这 ...
- HTML琐碎知识点(持续补充)
一.table标签 <table> <thead> <tr> <th>111</th> </tr> </thead> ...
- 【转】APP被苹果App Store拒绝的N个原因(持续补充)
作为iOS开发者,估计有很多都遇到过APP提交到App Store被拒,然后这些被拒的原因多种多样,今天dApps收集了常见的被拒的原因,以便更多开发者了解. 1.程序有重大bug,程序不能启动,或者 ...
- 【转】C++ STL 相关的问题集合
3.C++ STL中vector的相关问题: (1).调用push_back时,其内部的内存分配是如何进行的? (2).调用clear时,内部是如何具体实现的?若想将其内存释放,该如何操作 ...
- 前端知识点一HTML相关知识点
1.浏览器页面有哪三层构成,分别是什么,作用是什么? 构成:结构层.表示层.行为层 分别是:HTML.CSS.JavaScript 作用:HTML实现页面结构,CSS完成页面的表现与风格,JavaSc ...
随机推荐
- python学习第一次笔记
python第一次学习记录 python是什么编程语言 变成语言主要从以下几个角度进行分类,编译型和解释型.静态语言和动态语言.强类型定义语言和弱类型定义语言. 1.1编译型与解释性 编译型:一次性将 ...
- ZT Linux可用的最新版本的sublime text注册
更改hosts:sudo vim /private/etc/hosts 127.0.0.1 www.sublimetext.com 127.0.0.1 license.sublimehq.com 1 ...
- 2018-4-25 初识html
第一天 简单了解web 路线 html css js 发布网站 web运作 html html是超文本语言,也就是标记语言.说白了也就规定了一些符号,然后赋予这些符号意义.比如规定a就是超链接标签,用 ...
- 剑指Offer 62. 二叉搜索树的第k个结点 (二叉搜索树)
题目描述 给定一棵二叉搜索树,请找出其中的第k小的结点.例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4. 例如, 5 / \ 3 7 / \ / \ 2 4 6 ...
- L2-007 家庭房产 (25 分)
L2-007 家庭房产 (25 分) 给定每个人的家庭成员和其自己名下的房产,请你统计出每个家庭的人口数.人均房产面积及房产套数. 输入格式: 输入第一行给出一个正整数N(≤),随后N行,每行按下 ...
- 学习Linux的软件管理、进程管理
一.软件管理 1.使用yum管理软件安装包 1.1什么是yum Yum (全称为:Yellow dog Updater, Modified) 由Duke University团队,修改Yellow D ...
- jmeter中提取json串
https://blog.csdn.net/zha6476003/article/details/80295068
- vue学习之路一:安装vue-element-admin项目
今天看到一个vue网站,觉得很好,立马又有学习vue的冲动了,话不多说,直接贴项目网址: https://github.com/PanJiaChen/vue-element-admin/blob/ma ...
- CentOS官网下载系统镜像
https://jingyan.baidu.com/article/1876c85279cedd890a13766c.html
- 零基础学习python(2)
再讲新知识之前,先将一些之前没提的东西再介绍一下: (1) 命令行模式 在Windows开始菜单选择“命令提示符”(或者是在搜索栏中输入“cmd”),就进入到命令行模式,它的提示符类似C:\>: ...