工程C++基础
大家好,我是老A。今天我们要学习的是工程C++,这是一个不可描述的东西。我主要讲的是template。
template的用处是装逼,所以很重要。
C++配备了函数模板和类模板。函数模板就是我们平时的函数改一下就好了,我来举个例子。
#include<bits/stdc++.h>
using namespace std;
template<class T>inline T read(T&x){
x=;
register char c='';
while(c<)c=getchar();
while(c>)x=(x<<)+(x<<)+(c^),c=getchar();
}signed main(){
bool n;
read(n);
return ;
}
有趣,只要改一下C++的自带类型就可以了,如果是min函数,C++的自带不会让你用char类型的,如果我们用一个T来代替,嘿嘿嘿。前面加上class或者typename就可以了。和函数比较呢?比较简单的函数可以用这个代替。电脑自动装换成对应的类型。
下面是另一个例子。
#include<bits/stdc++.h>
using namespace std;
template<class T>T maxx(T x,T y){
return (x>y)?x:y;
}signed main(){
int a=,b=;
double c=1.1,d=1.2;
char e='',f='';
cout<<maxx(a,b)<<"\n"<<maxx(c,d)<<"\n"<<maxx(e,f);
}
太秀了,这个函数模板返回了所有类型,函数模板的作用就这么多了,同时多次调用。
接下来是类模板,他的作用是装逼,说的我和装逼男一样。客观上这个真的是装逼神器,各种private,public和static让你看不懂。
template <class T> class Stack {
    public:
        Stack();
        ~Stack();
        void push(T t);
        T pop();
        bool isEmpty();
    private:
        T *m_pT;
        int m_maxSize;
        int m_size;
};
#include "stack.cpp"
template <class  T>  Stack<T>::Stack(){
   m_maxSize = ;
   m_size = ;
   m_pT = new T[m_maxSize];
}
template <class T>  Stack<T>::~Stack() {
   delete [] m_pT ;
}
template <class T> void Stack<T>::push(T t) {
    m_size++;
    m_pT[m_size - ] = t;
}
template <class T> T Stack<T>::pop() {
    T t = m_pT[m_size - ];
    m_size--;
    return t;
}
template <class T> bool Stack<T>::isEmpty() {
    return m_size == ;
}
#include <stdio.h>
#include "stack.h"
int main() {
    Stack<int> intStack;
    intStack.push();
    intStack.push();
    intStack.push();
    while (!intStack.isEmpty()) {
        printf("num:%d\n", intStack.pop());
    }
    return ;
}
我们的private指的是模板类的内置部分,就是类的变量啊,public就是外置的函数,懂了吧。
这个东西的作用就是代替我们常用的结构体内置函数,其实差不多啊。当然这个可以模拟所有类型的混合数据结构,吊吧。
C++的template就讲到这里,完结撒花。
工程C++基础的更多相关文章
- phonegap工程搭建基础(一)
		官网:http://cordova.apache.org 一.环境配置 1. 安装Cordova on OS X and Linux: $ sudo npm install -g cord ... 
- [liusy.api-SMJ]-创建工程范例  MAVEN archetype 学习阶段(一)
		由于这个架构需要好多不同能力的工程,为了创建方便减少冗余,创建工程范例尤为重要 学习阶段: 参考资料 http://maven.apache.org/archetype/maven-archetype ... 
- eclipse构建maven+scala+spark工程 转载
		转载地址:http://jingpin.jikexueyuan.com/article/47043.html 本文先叙述如何配置eclipse中maven+scala的开发环境,之后,叙述如何实现sp ... 
- stm32f107vc在IAR环境下,引用库函数的工程文件的配置方法
		stm32做开发很方便的一个原因是大家可以稍稍放松对于硬件寄存器等的设置,因为stm32有了非常丰富和实用的库函数,外设文件等等,所以我们在使用的时候可以更加关注程序开发的过程和逻辑关系.但是,在开发 ... 
- 使用STM32CubeMX生成USB_HOST_HID工程[添加对CAPS_LOCK指示灯的控制][SetReport]
		在之前(使用STM32CubeMX生成USB_HOST_HID工程)的基础上进行修改 在结合之前在pc上的测试 USB之HID类Set_Report Request[调试手记1] 测试代码如下: /* ... 
- maven构建ssh工程
		1.1 需求 在web工程的基础上实现ssh工程的创建,规范依赖管理. 1.2 数据库环境 使用之前学习hibernate创建的数据库: 1.3 创建父工程 选择创建Maven Project ... 
- 安卓逆向(一)--Smali基础
		安卓逆向(一)--Smali基础 标签(空格分隔): 安卓逆向 APK的组成 文件夹 作用 asset文件夹 资源目录1:asset和res都是资源目录但有所区别,见下面说明 lib文件夹 so库存放 ... 
- APK反编译之一:基础知识—APK、Dalvik字节码和smali文件
		refs: APK反编译之一:基础知识http://blog.csdn.net/lpohvbe/article/details/7981386 APK反编译之二:工具介绍http://blog.csd ... 
- APK反编译之一:基础知识
		作者:lpohvbe | http://blog.csdn.net/lpohvbe/article/details/7981386 这部分涉及的内容比较多,我会尽量从最基础开始说起,但需要读者一定的a ... 
随机推荐
- ChIP-seq motif ROC 相关资料
			[怪毛匠子]独家整理 不可以转载 MEME工具 http://meme-suite.org DNA motif 搜索算法总结 http://www.bbioo.com/lifesciences/40- ... 
- C#如何运行外部程序(打开可执行程序):ShellExcute和Process
			最近的任务用到C#来调用C++内核程序,也就是C++编译运行后生成的.exe文件.网搜了一下C#中运行外部程序大致有两种方法,在此稍作总结: (1)使用API函数ShellExcute 添加引用 us ... 
- s21day06 python笔记
			s21day06 python笔记 一.昨日内容回顾及补充 回顾 补充 列表独有功能 reverse:反转 v = [1,2,3,4,5] v.reverse() #[5,4,3,2,1] sort: ... 
- Python全栈之路----三元运算
			· 三元运算又称三目运算,是对简单条件语句的简写,如: 简单条件语句: if 条件成立: val = 1 else: val = 2 改成三元运算: val = 1 if 条件成立 else 2 &g ... 
- 《Linux内核原理与分析》第二周作业
			反汇编一个简单的C程序 1.实验要求 使用: gcc –S –o test.s test.c -m32 命令编译成汇编代码,对汇编代码进行分析总结.其中test.c的具体内容如下: int g(int ... 
- react 点击空白处隐藏弹出层
			点击空白处隐藏弹出层的原理是:在 document 上绑定事件来隐藏弹出层,这样点击任何元素的时候都会冒泡到 document 上,都会执行隐藏弹出层的功能.然后我们在不需要隐藏弹出层的元素上阻止冒泡 ... 
- Java 初始 多态
			什么是多态 简单的来说就是具有多种形态的能力的特征 package ten; public interface Day1 { public void ring(); } package ten; pu ... 
- IIS 集成模式 导致 AjaxPro 无法正常运行
			web.config 配置如下: system.web/httphandlers <httpHandlers> <add verb="POST,GET" path ... 
- sedsed 一个更好理解sed执行过程的工具
			官网:http://aurelio.net/projects/sedsed/ 这个上面好多学习的资料 嘿嘿 留着慢慢看 昨晚在看sed的具体执行过程,看到有hold space,pattern ... 
- Spark Streaming 'numRecords must not be negative'问题解决
			转载自:http://blog.csdn.net/xueba207/article/details/51135423 问题描述 笔者使用spark streaming读取Kakfa中的数据,做进一步处 ... 
