10.3 c++ STL 初步
#include<Windows.h>
#include<iostream>
#include<algorithm> // sort swap min max lower_bound upper_bound reverse
#include<string>
#include<vector>
#include<queue> //队列 先进先出
#include<stack> // stack是先进后出
#include<set>
#include<map>
其实 这一堆头文件,可以用一个万能头文件代替#include<bits/stdc++.h>
#include<bits/stdc++.h>
using namespace std;
vector<int>v;
int main(){
for(int i=1;i<=10;i++)
v.push_back(i); //在vector类中作用为在vector尾部加入一个数据。
for(auto x : v) //auto 输出v中有定义的
{
cout<<x<<endl;
}
#include<bits/stdc++.h>
using namespace std;
vector<int>v;
vector<int>::iterator iter;
int main(){
for(int i=10;i>=1;i--)
v.push_back(i);
sort(v.begin(),v.end()); //排序,默认从小到大 //注意区间 v.begin(),v.end(),左闭右开
for(auto x : v)
cout<<x<<" ";
}
#include<bits/stdc++.h>
using namespace std;
vector<int>v;
vector<int>::iterator iter;
int main(){
int a=10,b=20;
cout<<a<<" "<<b<<endl;
swap(a,b); //交换
cout<<a<<" "<<b<<endl;
}
#include<bits/stdc++.h>
using namespace std;
vector<int>v;
vector<int>::iterator iter;
int main(){
int a=10,b=20;
cout<<a<<" "<<b<<endl;
a^=b;b^=a;a^=b; //请记住 这是一个骚操作!! 交换a和b 两次 a^=b不一样
cout<<a<<" "<<b<<endl;
}
using namespace std;
vector<int>v;
vector<int>::iterator iter;
int main(){
int a[11];
for(int i=1;i<=10;i++)
v.push_back(i);
int pos=lower_bound(v.begin(),v.end(),8)-v.begin(); //注意区间 v.begin(),v.end(),左闭右开
cout<<pos<<endl; // -v.begin()为什么不能去掉 :格式
}
// lower_bound()返回一个 iterator
//它指向在[first,last)标记的有序序列中可以插入value,
//而不会破坏容器顺序的第一个位置,
//而这个位置标记了一个第一个不小于value 的值。
using namespace std;
int main(){
string s; //直接定义string 比数组啥的好用
cin>>s;
cout<<s<<endl;
}
using namespace std;
int main(){
string s;
cin>>s;
reverse(s.begin(), s.end()); //反转顺序
cout<<s<<endl;
return 0;
}
using namespace std;
int main(){
string s="123456";
cout<<s<<endl;
return 0;
}
using namespace std;
int main(){
string s="123456";
cout<<s[1]<<endl; //输出2
return 0;
}
using namespace std;
int main(){
string s="123456",s2="qwe";
cout<<s+s2<<endl; //可以直接相加
return 0;
}
using namespace std;
int main(){
string s="123456",s2="qwe",s3=s+s2; //没有减号
cout<<s3<<endl;
return 0;
}
using namespace std;
int a[100000];
int main(){
for(int i=1;i<=10;i++)
{
int x;cin>>x;
if(a[x]==1) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
a[x]=1; //如果此时输入的数字,没有出现过,那么输出no 并把这个数字标记为1,下次输入的时候,会输出yes
}
using namespace std;
set<int>s; // For里 1e7 就会超过1s 就会炸掉 10 的7次方
int main(){
for(int i=1;i<=10;i++)
{
int x;cin>>x;
if(!s.count(x)) cout<<"NO"<<endl;
else cout<<"YES"<<endl;
s.insert(x);
}
在queup prior 优先队列 输入的自动排序 从小到大
multiset<int >s 也是set 的一种形式,可以重复,从小到大自动排序
using namespace std;
priority_queue<int>a; //队列 先进先出
int main(){
int b;
for(int i=0;i<10;i++){
cin>>b;
a.push(b);
}
for(int i=0;i<10;i++){
cout<<a.top()<<" ";
a.pop();
} //取得队首元素操作top(); 那 是最小的队首还是对大的:?
}
// 输出 121 100 88 77 66 52 44 4 3 1
/*empty() 如果队列为空,则返回真
pop() 删除对顶元素,删除第一个元素
push() 加入一个元素
size() 返回优先队列中拥有的元素个数
top() 返回优先队列对顶元素,返回优先队列中有最高优先级的元素 */
10.3 c++ STL 初步的更多相关文章
- Go语言之Windows 10开发工具LiteIDE初步使用
Intel Core i5-8250U,Windows 10家庭中文版,go version go1.11 windows/amd64,LiteIDE X34.1 在RUNOOB.COM的Go语言教程 ...
- 2020.2.27——STL初步
注:本文主要针对STL中的常用的操作进行总结 目录: 1.swap 2.sort 3.reverse 4.min,max(比较简单,暂且略过) 5._gcd 6.lower_bound &&a ...
- (STL初步)不定长数组:vector
STL是指C++的标准模板库.(存储着一些常用的算法和容器) vector是一个不定长数组.它把一些常用的操作”封装“在vector类型内部. 例如,a是一个vector.1对元素的操作有,可以用a. ...
- 【STL初步】不定长数组:vector + 集合:set + 映射:map
一.vector 为了节省空间,有时我们会使用动态数组vector. 定义动态数组 vector<类型名>变量名 vector<int>que //定义que为一个int类型的 ...
- AcWing STL初步学习
vector, 变长数组,倍增的思想 size() 返回元素个数 empty() 返回是否为空 clear() 清空 front()/back() push_back()/pop_back() beg ...
- STL初步学习(queue,deque)
4.queue queue就是队列,平时用得非常多.栈的操作是只能是先进先出,与栈不同,是先进后出,与之后的deque也有区别.个人感觉手写队列有点麻烦,有什么head和tail什么的,所以说 STL ...
- STL初步学习(vector)
前文 初三下学期进入新的学习,对于前两年的学习内容因为各种原因 上课打游戏,睡觉,看视频 已经遗忘,忘记如何使用,算是重新学习一次信息学,希望能尽快将以前的内容弥补上来,争取能在CSP-2020取得一 ...
- STL初步学习(set)
2.set set可以看作一个集合,可以实现自动排序(升序)和去重 在许多题目中,都可以使用这个模板库,减少很多操作,例如P1923 第k小数,当然,这道题有很多奇奇怪怪的做法,分值都不同,之后会讲解 ...
- STL初步学习(map)
3.map map作为一个映射,有两个参数,第一个参数作为关键值,第二个参数为对应的值,关键值是唯一的 在平时使用的数组中,也有点类似于映射的方法,例如a[10]=1,但其实我们的关键值和对应的值只能 ...
随机推荐
- bootstrap--网格化布局
1.响应式网格系统随着屏幕或视口(viewport)尺寸的增加,系统会自动分为最多12列 2.规则 行必须放置在 .container class 内,以便获得适当的对齐(alignment)和内边距 ...
- 0226 rest接口设计
背景 为了更方便的书写和阐述问题,文章中按照第一人称的角度书写.作为一个以java为主要开发语言的工程师,我所描述的都是java相关的编码和设计. 工程师的静态输出就是代码和文 ...
- UWP通过机器学习加载ONNX进行表情识别
首先我们先来说说这个ONNX ONNX是一种针对机器学习所设计的开放式的文件格式,用于存储训练好的模型.它使得不同的人工智能框架(如Pytorch, MXNet)可以采用相同格式存储模型数据并交互. ...
- php利用七牛云的对象存储完成图片上传-高效管理图片
在搭建个人博客时,大家都会买一台云服务器.可是图片的存放一直是一个问题,冷月帮大家找到一个免费的第三方平台对象存储-七牛云.大家可以把图片上传到七牛云的对象存储,大大节约服务器的压力. 首先,大家在使 ...
- ES6 - 基础学习(3): 变量的解构赋值
解构赋值概述 1.解构赋值是对赋值运算符的扩展. 2.它是一种针对数组或者对象进行模式匹配,然后对其中的变量进行赋值. 3.代码书写上显得简洁且易读,语义更加清晰明了:而且还方便获取复杂对象中的数据字 ...
- openlayers6实现webgl点图层渲染效果(附源码下载)
前言:openlayers6推出来的有一段时间,推出来的新特性见:https://github.com/openlayers/openlayers/releases/该版本的主要功能是能够组合具有不同 ...
- 1、Docker部署及基础理论
1.Docker入门简介 Docker技术类似码头上看到的集装箱,最早集装箱没有出现的时候,码头上有许多搬运的工人在搬运货物,有了集装箱以后,搬运货物变得简单,通过集装箱的搬运模式更加单一.高效,将货 ...
- Asp.Net Core 3.1 集成Swagger
引入Nuget包 Swashbuckle.AspNetCore.SwaggerGen Swashbuckle.AspNetCore.SwaggerUI 配置Startup 配置ConfigureSer ...
- 『后缀自动机入门 SuffixAutomaton』
本文的图片材料多数来自\(\mathrm{hihocoder}\)中详尽的\(SAM\)介绍,文字总结为原创内容. 确定性有限状态自动机 DFA 首先我们要定义确定性有限状态自动机\(\mathrm{ ...
- python3-cookbook笔记:第四章 迭代器与生成器
python3-cookbook中每个小节以问题.解决方案和讨论三个部分探讨了Python3在某类问题中的最优解决方式,或者说是探讨Python3本身的数据结构.函数.类等特性在某类问题上如何更好地使 ...