【代码模板】不存在的NOIP2017

虽然可能没机会参加NOIP2017的复赛了
但是这份模板我还是会在比赛前完成它的,
作为对我过去一年的反馈。

因为技能树点歪,,所以我会弃坑重新来点,
辣么,,模板题的理解就很重要,他直接决定了其他的题目你写不写的来。。
所以,这里的许多东西也许没办法在OJ上直接验证正确性(这也是打模板的痛苦之处)
不过我会尽力去找的,并且也会把自编的数据存放下来。
就酱紫。

frame

//这个项目提供了程序基本的代码框架

//头文件模板
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<cctype>
#include<iomanip>
#include<sstream>
#include<cmath>
#include<string>
#include<vector>
#include<stack>
#include<queue>
#include<map>
#include<set>
#include<bitset>
#include<list>

//命名空间
using namespace std;

//声明与宏定义
typedef long long LL;
typedef long double LD;

#define fst first
#define sec second
#define mp make_pair

//常量定义
const int N = 1e5, inf = 1e9;  //代替define的写法 & e计数法的使用

//输入输出优化
int readint(){  //readint好简单啊为什么。。。
    int x=0, op=1;  char ch = getchar();  //一定要赋初始值
    while(ch < '0' || ch > '9'){ if(ch=='-')op=-1; ch = getchar(); }
    while(ch >= '0' && ch <= '9'){ x=x*10+ch-'0'; ch = getchar(); }
    return x*op;
}

int main(){
	cout<<"Hello World"<<endl;
	return 0;
}

STL

//这个项目提供了STL的范例
//NOIP前第一轮模板 2017.10.5

//顺序容器:vector, deque, list
//关联容器:set, map,
//适配容器:stack, queue, priority_queue
#include<iostream>
#include<set>  //基于红黑树
#include<map>  //基于平衡二叉树
#include<vector>  //时间换空间(逃
#include<string> //各种黑科技
#include<bitset>

using namespace std;

//操作整理:声明,插入,删除,查找,遍历
//用法整理:你自己想啊

void setting(){
	set<int>myset; //声明int类型的集合(突然发现重名好像不会炸233333)
	
	//1. 基本操作
	myset.insert(233);  //往里面添加元素(重复插入无效)
	myset.erase(233);  //删除里面的某个元素(如果不存在该元素则不操作)(这里也可以用迭代器删除区间)
	myset.count(233); //查询集合中是否存在某个元素
	myset.clear();   //清空集合
	
	//2. 迭代器
	myset.insert(233);  myset.insert(322);
	set<int>::iterator it;  //如果重名声明迭代器的时候会炸掉
	set<int>::reverse_iterator rit; //反向迭代器
	for(it = myset.begin(); it != myset.end(); it++){
		cout<<*it<<" ";
	}
	cout<<"\n";
	for(rit = myset.rbegin(); rit != myset.rend(); rit++){
		cout<<*rit<<" ";
	}
	cout<<"\n";
	
	//3. 熟练搞事
	cout<< (myset.find(233)==myset.begin()) <<" \n"; //查找键值的位置并返回迭代器
	cout<< *myset.lower_bound(234)<<"\n";  //返回第一个>=key的元素的迭代器
	cout<< *myset.upper_bound(233)<<"\n";  //返回第一个>key的元素的迭代器
}

void maping(){ 
	map<int,int>mymap; //左键右值
	
	//1. 基本操作,,同为关联容器,基本和set差不多吧
	mymap[5] = 7;  //添加元素(注意 "mymap[0];" 同样往map中添加了元素,只是没有赋值而已)
	
	//2. 迭代器
	map<int,int>::iterator it = mymap.begin();
	cout<<(it->first)<<" "<<(it->second)<<"\n"; //map遍历时访问的是pair类型
	
	//3. 
	
}

void bitsetting(){
	
}

void stringing(){
	string str = "123456789";  char ch[110]="233";
	
	//构造函数
	str = string(ch); //用c语言字符串s初始化
	str = string(5,'c');  //用5个字符c初始化
	string s1 = str;  //赋值操作
	
	//基本特性
	str.size(); //返回大小
	
	//各种操作
	str.substr(0, 2);  //返回子串,返回0开始的由两个字符组成的字符串
	
	
}

int main(){
	stringing();
	cout<<"Hello World"<<endl;
	return 0;
}

阅读更多

没有更多推荐了,返回首页