读入优化与STL

读入优化

众所周知 ,C++ 中的输入是函数化的:scanf() 系列 .但是 scanf() 系列的占位符很是让人头疼,尤其是 long long 类型,而 cin/cout 系列最大的让人不满意之处便是太慢....

但是可以开挂!

std::ios::sync_with_stdio(false)

但是有时会莫名 \(RE\) ...而且当数据量很大时还是很慢,于是要自写函数,像这样:

inline int scanf(int& x)
{
	x=0;int f=1,c=getchar();
    	while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}
	while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}
	x*=f;
}

当然有读入优化自然会有"输出优化" :
当然输出优化不是经常用

inline void printf(int x)
{
	if(x<0){puctahr('-');x=~(x-1);}
	int s[20],top=0;
	while(x){s[++top]=x%10;x/=10;}
	if(!top)s[++top]=0;
	while(top)putchar(s[top--]+'0');
}

重载了scanfprintf,,,多谢C++的函数重载...
\(20180714\)


时间跳跃到2019年,昤昽回到pdyz给刚入门的学弟学妹们讲课。。。然而因为授课时间从原本计划的5天变成2天,因此原本计划中的STL并没有讲。。。只好挂在这里。。。

sort 函数:

int a[100];
sort(a+n,a+m);//对a[n]到a[m-1]这段区间的内容进行排序
sort(a+n,a+m,cmp);//对a[n]到a[m-1]这段区间的内容依照cmp函数提供的规则排序

vector

\(vector\)是一个不定长度的数组,可以像下面一样使用:

vector<int> v;//声明一个int类型的vector
v[i];//返回v中第 i+1 个元素
v.size();//返回v的长度
v.empty();//判断v是否为空
v.push_back(x);//向v的尾部添加一个元素x
v.pop_back();//删除v的尾部元素
v.push_front();//向v的首部添加元素(很慢,慎用)
v.back();//返回v的尾部元素

string

\(string\) 是一个“字符串”,C++为其提供了较多的运算。

string s;

s[x];//与数组类似
s.size();//返回s的长度
s.length();//同s.size();
s1+s2;//将s1与s2首尾相连

queue

\(queue\)是STL提供的队列,可以实现队列的基本操作

queue<int> q;
q.push(a);//向q的尾部添加一个元素
q.front();//得到q的队首元素但不删除
q.pop();//q的队首元素出队
q.empty();//返回q是否为空

stack

stack<int> st;
st.push();//向栈顶压入一个元素
st.pop();//栈顶元素出栈
st.top();//返回栈顶元素
st.empty();//判断栈是否为空

STL还有很多东西,上面列出的vector、queue等也非如此简单,各位学弟学妹可以上网查阅

posted @ 2018-07-14 07:24  昤昽  阅读(142)  评论(0编辑  收藏  举报