浅谈那些你不知道的C艹语法
C艹实践中的超神语法
pragma
卡常必备QAQ
#pragma GCC optimize(2)
#pragma GCC optimize(3)
#pragma GCC optimize("Ofast")
#pragma GCC optimize("inline")
#pragma GCC optimize("-fgcse")
#pragma GCC optimize("-fgcse-lm")
#pragma GCC optimize("-fipa-sra")
#pragma GCC optimize("-ftree-pre")
#pragma GCC optimize("-ftree-vrp")
#pragma GCC optimize("-fpeephole2")
#pragma GCC optimize("-ffast-math")
#pragma GCC optimize("-fsched-spec")
#pragma GCC optimize("unroll-loops")
#pragma GCC optimize("-falign-jumps")
#pragma GCC optimize("-falign-loops")
#pragma GCC optimize("-falign-labels")
#pragma GCC optimize("-fdevirtualize")
#pragma GCC optimize("-fcaller-saves")
#pragma GCC optimize("-fcrossjumping")
#pragma GCC optimize("-fthread-jumps")
#pragma GCC optimize("-funroll-loops")
#pragma GCC optimize("-fwhole-program")
#pragma GCC optimize("-freorder-blocks")
#pragma GCC optimize("-fschedule-insns")
#pragma GCC optimize("inline-functions")
#pragma GCC optimize("-ftree-tail-merge")
#pragma GCC optimize("-fschedule-insns2")
#pragma GCC optimize("-fstrict-aliasing")
#pragma GCC optimize("-fstrict-overflow")
#pragma GCC optimize("-falign-functions")
#pragma GCC optimize("-fcse-skip-blocks")
#pragma GCC optimize("-fcse-follow-jumps")
#pragma GCC optimize("-fsched-interblock")
#pragma GCC optimize("-fpartial-inlining")
#pragma GCC optimize("no-stack-protector")
#pragma GCC optimize("-freorder-functions")
#pragma GCC optimize("-findirect-inlining")
#pragma GCC optimize("-fhoist-adjacent-loads")
#pragma GCC optimize("-frerun-cse-after-loop")
#pragma GCC optimize("inline-small-functions")
#pragma GCC optimize("-finline-small-functions")
#pragma GCC optimize("-ftree-switch-conversion")
#pragma GCC optimize("-foptimize-sibling-calls")
#pragma GCC optimize("-fexpensive-optimizations")
#pragma GCC optimize("-funsafe-loop-optimizations")
#pragma GCC optimize("inline-functions-called-once")
#pragma GCC optimize("-fdelete-null-pointer-checks")
pragma!pragma!用了pragma,暴力踩标算!
__attribute__
赋予函数属性:
always-inline 强制inline
noinline 强制不inline
auto
C++11中这货tql!爽得很!自动匹配类型呀!配合范围for,STL再也不用迭代器!
- 自动匹配类型,为C++11标准
 
栗子:
vetcor p<int> ;
auto q = p;
auto e = p[0] ;
范围for循环,15字遍历:
for(auto& y:n)配合函数定义使用(auto -> delctype):
template<class T,class Y>
auto work(T t,Y y) -> delctype(t+y){
    dosomething ;
}
暂时没有更好的栗子QAQ
template
传说中C艹相对于C加入了两个重要元素:
- template
 - class(不讲)
 
那么接下来我就讲讲template技术(大爱C艹)
- 基本template
 
当你写一个函数却想要使用与各个版本的时候,你是否抓耳挠腮?
当你想写一个类以资次各种类型的数据结构的时候时候,你是否遇上各种问题?
当你想写一个资次任意多个参数的函数的时候,你是否对C的语法不知所以,云里雾里?
那么,C艹就是你的福音!C艹的模板技术给予工作人员们无限的可能!
基本使用吗,假设你在编写一个接受int型参数的函数,只要把template<class/typename type>加在函数头,所有int改成type就珂以了
//样例
template<class Type>Type add(Type a,Type  b){
    return a+b;
}
模板类
初级
接下来的class当成struct就珂以了
template<class type>
class edge{
    int to;
    int next;
    type edge;
}
//这实现了一个边权可为任意参数的edge
怎么样?
- 较高级
 
拿我写口胡的并查集做实例QAQ
#pragma GCC optimize(2)
#include<map>
using std::map;
/*
......
*/
template<class T>class Union_Find_Sets{
    pravite:
        map<T,T> fa ;
    public:
        T getfa(T a){
            if(fa[a]==a)return a ;
            else return fa[a] = getfa(fa[a]) ;
        }
        T merge(T a,T b){
            T aa = getfa(a),bb = getfa(b) ;
            if(aa==bb)return ;
            else fa[aa] = bb ;
        }
        bool query(T a,T b){
            T aa = getfa(a),bb = getfa(b) ;
            if(aa==bb)return true ;
            else return false;
        }
        friend bool operator()(T a,T b){
            return query(a,b) ;
        }
    //口胡代码
}
- 可变参模板
 
template<class T,class Y>
auto max(T FiRsT,Y SeCoNd) ->delctype(FiRsT+SeCoNd){
    if(FiRsT>SeCoNd)return FiRsT;
    else return SeCoNd ;
}
template<class T,class ...Args>
auto max(T FiRsT,Args... argv) ->delctype(FiRsT){
    return max(FiRsT,max(argv...)) ;
}
强爆了!不知道比C好多少倍,一个函数走天下!(原谅那无比丑陋的码风QAQ)
重载运算符"()"
同别的重载运算符格式
priority_queue
用STL中的优先队列作个实例:
template<class type>
class cmp{
    friend bool operator()(type a,type b){
        if(a>b)return true;
        else return false;
    }
}
priorty_queue<int,vector<int>,cmp<int> >Q ;
感谢观看,留言请到留言板
    Warning!
    本文由 TYQ 创作,采用 知识共享署名 4.0 国际许可协议进行许可。
    转载要与作者联系,并需在正文明显处署名作者且注明文章出处。
    对了,我永远喜欢C++啊。
												
											浅谈那些你不知道的C艹语法的更多相关文章
- 浅谈Swift语法
		
Apple 在2014年6月的WWDC公布了一款新型的开发语言,很多美国程序猿的价值观貌似和我们非常大的不同,在公布的时候我们能够听到,场下的欢呼声是接连不断的.假设换作我们,特别是像有Objecti ...
 - 浅谈Kotlin(二):基本类型、基本语法、代码风格
		
浅谈Kotlin(一):简介及Android Studio中配置 浅谈Kotlin(二):基本类型.基本语法.代码风格 浅谈Kotlin(三):类 浅谈Kotlin(四):控制流 通过上面的文章,在A ...
 - 浅谈Java的throw与throws
		
转载:http://blog.csdn.net/luoweifu/article/details/10721543 我进行了一些加工,不是本人原创但比原博主要更完善~ 浅谈Java异常 以前虽然知道一 ...
 - 浅谈angular2+ionic2
		
浅谈angular2+ionic2 前言: 不要用angular的语法去写angular2,有人说二者就像Java和JavaScript的区别. 1. 项目所用:angular2+ionic2 ...
 - 浅谈Hybrid技术的设计与实现第二弹
		
前言 浅谈Hybrid技术的设计与实现 浅谈Hybrid技术的设计与实现第二弹 浅谈Hybrid技术的设计与实现第三弹——落地篇 接上文:浅谈Hybrid技术的设计与实现(阅读本文前,建议阅读这个先) ...
 - 浅谈Hybrid技术的设计与实现
		
前言 浅谈Hybrid技术的设计与实现 浅谈Hybrid技术的设计与实现第二弹 浅谈Hybrid技术的设计与实现第三弹——落地篇 随着移动浪潮的兴起,各种APP层出不穷,极速的业务扩展提升了团队对开发 ...
 - python浅谈正则的常用方法
		
python浅谈正则的常用方法覆盖范围70%以上 上一次很多朋友写文字屏蔽说到要用正则表达,其实不是我不想用(我正则用得不是很多,看过我之前爬虫的都知道,我直接用BeautifulSoup的网页标签去 ...
 - 浅谈Vue.js
		
作为一名Vue.js的忠实用户,我想有必要写点文章来歌颂这一门美好的语言了,我给它的总体评价是“简单却不失优雅,小巧而不乏大匠”,下面将围绕这句话给大家介绍Vue.js,希望能够激发你对Vue.js的 ...
 - 浅谈HTML5单页面架构(一)——requirejs + angular + angular-route
		
心血来潮,打算结合实际开发的经验,浅谈一下HTML5单页面App或网页的架构. 众所周知,现在移动Webapp越来越多,例如天猫.京东.国美这些都是很好的例子.而在Webapp中,又要数单页面架构体验 ...
 
随机推荐
- c# 占位符 {0}  {1}
			
占位符就是先占住一个固定的位置,等着你再往里面添加内容的符号.站位符由{数字}组成,数字由0开始编号. 第1个占位符:{0} 第2个占位符:{1} 第2个占位符:{2} 初学C#之变量.占位符.转义符 ...
 - PHP操作MYSQL数据库(10.11 第十九天)
			
一.连接及断开数据库 1.使用mysqli 扩展(推荐),只针对mysql数据库 面向对象的方式 $con = new mysqli(ip,user,password); if($con->co ...
 - POJ 3627:Bookshelf
			
Bookshelf Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7758 Accepted: 3906 Descrip ...
 - 虚拟机vmware vmnet8 未识别(转)
			
原文链接:https://blog.csdn.net/windows_q/article/details/50678646
 - Python基本数据类型之字符串
			
Python转义字符 在需要在字符中使用特殊字符时,python用反斜杠(\)转义字符.如下表: 转义字符 描述 \(在行尾时) 续行符 \\ 反斜杠符号 \' 单引号 \" 双引号 \a ...
 - shell教程<入门篇>
			
由于我平时的工作环境是linux,所以无可避免的经常使用命令行模式和shell脚本,而且有些命令行每天都要输好多遍,比如ssh登录之类的,所以干脆把平时常用的命令都写成脚本文件,所以特意开了一个she ...
 - 关于Oracle中job定时器(通过create_job创建的)配置示例
			
begin dbms_scheduler.create_job(job_name => 'JOB_BASIC_STATISTIC', job_type => 'STORED_PROCEDU ...
 - java课程之团队开发冲刺阶段1.9
			
一.总结昨天进度 1.学习了简单的消息推送方法,并且能够使用进行每日定时推送 二.遇到的困难 1.在每日推送的过程中,程序必须被正常关闭,如果程序是被切到后天然后直接结束进程的话,每日推送的线程服务也 ...
 - CI中site_url()和base_url()的区别
			
CI中site_url()和base_url()的区别 来源:未知 时间:2014-10-20 11:38 阅读数:150 作者:xbdadmin [导读] 在使用CI框架的使用经常碰到 ...
 - JaveSE--getResource
			
System.out.println(ConfigUtils.class.getProtectionDomain().getCodeSource().getLocation().getPath()); ...