工程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 ...
随机推荐
- restful规范整理
restful的十条规范 restful一共有十条规范,但其并不是规定.可以不去遵守,是一种软件风格 1.API与客户端交互,通常使用https协议 2.域名:https://api.baidu.co ...
- 算法复杂度中的O(logN)底数是多少
前言 无论是计算机算法概论.还是数据结构书中,关于算法的时间复杂度很多都用包含O(logN)这样的描述,但是却没有明确说logN的底数究竟是多少.算法中log级别的时间复杂度都是由于使用了分治思想,这 ...
- JS的小判断
// 0 if(undefined) { console.log('1'); } else { console.log('0'); } // 0 if(null) { console.log('1') ...
- IO流技术
IO流常用基类 字节流的抽象基类:InputStream,OutputStream 字符流的抽象基类:Reader,Writer Writer类 子类:BufferedWriter,CharArray ...
- 框架tensorflow2
TensorFlow 2 TensorFlow 激励函数 TensorFlow 添加层: 思考:matmul和multiply两种乘法的区别:http://www.soaringroad.com/?p ...
- java.lang.ClassNotFoundException的解决方法
java.lang.ClassNotFoundException的解决方法 出现这个问题的原因可能很多,但是最终原因都是部署的项目文件中没有这个类包. 那么出错的点在哪呢?逐一排除! 1.首先在项 ...
- ES5与ES6中的继承
ES5继承在ES5中没有类的概念,所以一般都是基于原型链继承,具体的继承方法有以下几种: 父类: function Father (name) { this.name = name || 'sam' ...
- js数字自执行随机滚动
每三秒执行一次,若是需要触发执行,可添加一个单击事件.<!DOCTYPE HTML> <html> <head> <meta http-equiv=" ...
- node day2 vue read html
app.js var http = require("http"); var fs = require('fs'); var url = require('url'); http. ...
- 《DSP using MATLAB》Problem 7.3