一些小技巧
1、结构体的存储(开成员的顺序不同所用的空间也不同!!!)
今天发现了一下结构体中的一些很骚的东西,当然只要我们能够了解到结构体的储存规则,就不必要开一些浪费空间的东西。
博客链接:
结构体存储
关键字:偏移量,字节,自动对齐,字节边界数。
2、goto语句
关键字:转移,传送,注意事项!
3、private和public还有(friend和protected)
这个东西感觉没什么用,但是了解一下,还是好的。
博客链接
private,friendly,public,protected
关键字:好像没啥用,类型。
4、static函数
如果在结构体中定义函数,只能用static,才能在外部用“::”符号进行访问!
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
class t
{
public:
static int sum(int a,int b)
{
return a+b;
}
};
int main()
{
int a, b;
scanf("%d%d",&a,&b);
cout<<sum(a,b);
return 0;
}
原因博客链接:
函数名前加static与不加static的区别
用法博客链接:
”::“用法
5、template
这个东西是加在函数前面的,他就叫“模板”,就是有了它,不管什么类型的数据输进去,就可以按照函数的规律有东西输出来,不会发生奇怪的事情,也就是说比如你要写一个swap,那么你如果不知道这玩意儿,你要写一个double的swap,int的swap,long long 的swap,总之直接把你写疯,而有了这个一个就可以搞定!
下面我们就上一个函数模板的template:
#include<bits/stdc++.h>
#include<string>
using namespace std;
template <typename functional> void xswap(functional &a,functional &b)
{
functional c;
c=a;
a=b;
b=c;
}
int main()
{
string s;
string c;
cin>>s>>c;
xswap(s,c);//important
cout<<s<<endl<<c;
int a,b;
cin>>a>>b;
xswap(a,b);
cout<<a<<endl<<b;
char e,d;
cin>>e>>d;
xswap(e,d);
cout<<e<<endl<<d;
return 0;
}
更多请见链接:
Template 基础篇-函数模板
当然还有类模板用法:
这里还正在学习:
C++中 模板Template的使用
6、cin优化
本人最近发现cin是可以进行优化的,cin并不是因为自身原因所以比scanf慢的,而是因为为了保留什么兼容性,把他变慢了,我们只要把这个兼容性关了以后,他就会变快!
关闭语句:
std::ios::sync_with_stdio(false);
下面是有趣的实验截图:
scanf语句测试:
cin不加优化:
cin加优化
有人会问,我每次写个读入就要写这么长的东西,岂不很恼火。
没事,其实只要define一下就可以了,
这就是cin的优化,我们发现优化后的cin比scanf都跑得快,表现的非常优异!这里再给大家推荐一下更快的读入算法,快读和fread,有兴趣的同学可以看一下下面的博客链接。
博客链接:输入流详讲
7、namespace神奇
这个东西不好说,下面直接上代码吧!
其实从某些方面来说,这个东西是可以不用申请的,只是会稍微有一点麻烦!
这里只是放几篇代码,绝世高人自己悟其中的奥一吧!
代码一
#include<iostream>
int main()
{
int a;
std::cin>>a;
std::cout<<a;
}
代码二:
#include<iostream>
#define cin std::ios::sync_with_stdio(false);std::cin
#define cout std::ios::sync_with_stdio(false);std::cout
namespace njc
{
int sum(int a,int b)
{
return a+b;
}
}
using namespace njc;
int main()
{
int a,b;
cin>>a>>b;
cout<<sum(a,b);
return 0;
}
8、pair
博客链接:
pair
9、链表(Linked List)
博客链接:
链表
10、求导基本
等一会儿!
11、逆序对(离散化,动态开点)
从逆序对开始······
后续更新!

浙公网安备 33010602011771号