工程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 ...
随机推荐
- tp5阿里云短信发送
到阿里云下载php版demo,下完整版的,不是轻量级的; 框架 :TP5 把下载下来的文件放到extend里面 文件名:alimsg 里面的文件 import('alimsg.api_demo.Sm ...
- thinkPHP 分页样式增加下拉列表
$linkPage=" <select name='sldd' style='width:40px;height:30px;border:1px red block;' onchan ...
- 内存泄露java.lang.OutOfMemoryError: PermGen space解决方法
PermGen space的全称是Permanent Generation space,是指内存的永久保存区域,这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被 ...
- AspectJ的拓展学习--织入顺序和通知参数指定
前言: 其实spring的aop非常的强大, 因此研究一下AspectJ还是有必要, 而不是仅仅停留在初级的阶段. 比如spring的事务是基于aop来实现的, 如果不能深入的研究, 可能很多知识点, ...
- MacBook使用笔记1 - 快捷键与命令学习
转载请标注原链接:http://www.cnblogs.com/xczyd/p/4846795.html 最近开始使用mac air,以前从来没有接触过mac,各种操作捉急.Mac快捷键相当多,遇到各 ...
- Windows7 密码修改
一:不用输入原密码的方式修改用户的密码 1 命令行输入命令:mmc #进入到控制台 2 点击左上角的文件,选择添加/删除管理单元 3 选择本地用户和组管理单元,添加到本地计算机,完成,确定 4 添加 ...
- Nginx自动安装脚本
添加一个install_nginx.sh脚本 版本一:(以下脚本为在线自动化安装) #!/bin/bash mkdir /soft cd /soft wget -c http://nginx.org/ ...
- ios-微信支付登录分享-notification通知
// // AppDelegate.m // NewAppBase // // Created by ENERGY on 2018/5/17. // Copyright © 2018年 ENE ...
- Flask--(登录注册)抽取视图函数
视图函数抽取: 在info目录下准备视图业务模块包:modules 在modules中添加首页模块包index 在index包的__init__中导入蓝图 在index的__init__创建蓝图 在i ...
- 【ELK】之Centos6.9_x64安装elasticsearch6.2.1
1.下载elasticsearch6.2.1 wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.1 ...