工程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 ...
随机推荐
- 用rz、sz命令在Xshell传输文件
用rz.sz命令在Xshell传输文件 2014-03-27 14:38:17 标签:用rz.sz命令在Xshell传输文件 Xshell很好用,然后有时候想在windows和linux之间上传或下载 ...
- WEBBASE篇: 第九篇, JavaScript知识4
JavaScript 4 练习1 <!doctype html> <html lang="en"> <head> <meta charse ...
- mybatis(一、原理,一对多,多对一查询)
MyBatis框架及原理分析 MyBatis 是支持定制化 SQL.存储过程以及高级映射的优秀的持久层框架,其主要就完成2件事情: 封装JDBC操作 利用反射打通Java类与SQL语句之间的相互转换 ...
- AWS Redshift typical error and potential root cause:
Full join issue: When use full join, the below join condition should not occur: 1, OR statement2, an ...
- Unity在UI界面上显示3D模型/物体,控制模型旋转
Unity3D物体在UI界面的显示 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- ...
- Dijkstra(迪杰斯特拉)模板
直接将模板封装在结构体里面. struct Edge{ int from,to,dist; Edge(int u, int v,int d): from(u),to(v),dist(d){} }; s ...
- jquery常用指令
table中td多行展示: ```css td { word-wrap: break-word; } ``` div模态框: <div id="loading" style= ...
- PythonStudy——第一阶段性测试
1.Python解释器,在2.x和3.x上分别采用的是什么默认编码8 2.定义字符串变量时,单引号,双引号,三引号什么区别? 3.编程语言可以分为哪三类,特点都是什么 4.定义一个变量有三个特性, 5 ...
- py-day3-1 python 风湿理论之函数即变量
# 风湿理论之函数即变量 def foo(): print('from foo') bar() def bar(): print('from bar') foo() from foo from bar ...
- PostgreSQL 自定义自动类型转换(CAST)
转载自:https://yq.aliyun.com/articles/228271 背景 PostgreSQL是一个强类型数据库,因此你输入的变量.常量是什么类型,是强绑定的,例如 在调用操作符时,需 ...