根据我上一片博客的介绍–c++函数模板初探 我们可以用模板实现很多函数,也对c++函数模板有了初步的了解。 但是加入有下面这个情况: template <class T1, class T2> void ft (T1 &x, T2 &y) { ... ?type? xpy = x+; ... } 在这种情况下xpy应该是什么类型呢?由于不知道ft()将如何使用,因此无法预知这一点。正确的类型可能是T1、T2或者其他类型。假如又出现了重载运算符,这会让问题更加的复杂。 于是为了解决这个问题,c++11新增了关键字 decltype。 我们可以这样使用: int x; decltype(x) y;//y的类型和x类型一致 除了上述这样写,我们也可以这样写: decltype(x+y) xpy; xpy = x+y; 通过这个关键字,我们可以把前面的代码修改成这样: template <class T1, class T2> void ft(T1 x, T 继续阅读 >>


陈苏扬 18/10/04 07:40:50
C++之所以强大,其中肯定少不了模板的功劳。使用好模板也可以为以后的编程省去很多的功夫。 函数模板是通用的函数描述,也就是说,它们使用泛型来定义函数,其中泛型可用具体的类型(如int或double) 替换。通过将类型作为参数传递给模板,可使编译器生成该类型的函数。由于模板允许以泛型的方式编写程序,因此有时也被称为通用编程。由于类型使用参数表示的,因此模板特性有时也被成为参数化类型(parameterized types) (C++ Primer Plus 第六版中文 P281) 以上就是一个函数模板的定义。 首先如果没有函数模板, 试想如果需要一个函数来交换两个数字的值,这个时候由于不知道两个数字的类型,你需要使用函数重载来写很多个类型的函数,如 void Swap(int &, int &); void Swap(double &, double &); void Swap(char &, char &); void Swap(short &am 继续阅读 >>


陈苏扬 18/10/03 10:10:56
Xv 6 Chapter 0 Operating system interfaces 操作系统的工作是分享电脑资源给多个程序,并且提供一系列服务而不是只让硬件提供。 操作系统通过接口给用户程序提供服务,所以设计一个好的接口就显得很重要。 这里操作系统xv6提供基础的接口,由Ken Thompson 和Dennis Ritchie的操作系统介绍,同时还有模仿Unix的内部设计。 每一个运行的程序叫做进程,他们都有自己的空间,其中包括指令,数据和栈。指令实现了程序的计算功能,数据是那些计算中的变量。而栈则决定了程序的运行。 当一个进程需要请求内核指令的时候,他会在操作系统的接口中请求一个程序。这样的程序叫做系统调用。系统调用进入到内核,内核就提供服务并且返回。因此一个进程在用户内存和内核内存中互相切换。 内核使用CPU的硬件保护机制来保证每个进程在用户内存中运行并只能访问自己的空间。内核运行的时候利用硬件提供的特权来实现这些保护,同时用户程序没有这些优先权。当一个用户程序请求系统调 继续阅读 >>


陈苏扬 18/08/28 15:50:27
MIT 6.828 在网上一直有很高的地位,但是由于上手难度太难,而且是MIT研究生的课程,让大家都望而却步. 但是如果想要深入透彻的了解计算机系统的架构和设计,这门课又是有很大帮助. 作为一个计算机学生,一个热爱学习,热爱技术的学生,我还是决定要去试试水. 后面将会慢慢讲解我遇到的所有问题和解决办法。如果有任何错误或者建议都可以和我交流。这里贴下我的邮箱 hellochen19970916@gmail.com (90后哦 haha) 本机环境 虚拟机VMware Fusion Ubuntu 16.04.4 参考资料 MIT 6.282 lab1 本人GItHub地址 课程描述 MIT 6.828 fall2017 本篇博客主要讲解本人在环境配置遇到的问题的解决的方法.(初学MIT 6.828课程,如果有错误欢迎指出) 首先 Software Setup You must use an x86 Athena machine; that is, uname -a shoul 继续阅读 >>


陈苏扬 18/08/12 05:01:14
ACM题集以及各种总结大全!        虽然退役了,但是整理一下,供小弟小妹们以后切题方便一些,但由于近来考试太多,顾退役总结延迟一段时间再写!先写一下各种分类和题集,欢迎各位大牛路过指正。        一.ACM入门        关于ACM    百度百科连接        杭州电子科技大学(hdu)ACM题目    连接        关于acm的帮助     连接        北京大学(poj)题目      连接  & 继续阅读 >>


陈苏扬 18/08/05 01:47:59
HDU题目2005具体详情 *ACM水题就要尝试多用其他方法解决. 尝试不一样的解题技巧,总有一天会用得上* 题目 给定一个日期,输出这个日期是该年的第几天。 Input 输入数据有多组,每组占一行,数据格式为YYYY/MM/DD组成,具体参见sample input ,另外,可以向你确保所有的输入数据是合法的。 Output 对于每组输入数据,输出一行,表示该日期是该年的第几天。 Sample Input 1985/1/20 2006/3/12 Sample Output 20 71 如下是代码的实现 #include<iostream> #include<string> #include<regex> #include<cstdlib> int main () { using namespace std; string a; const int month[12] = {31,28,31,30 继续阅读 >>


陈苏扬 18/08/01 10:31:44
GDB调试是每个CS学习者都一定要会的技术,同时也是了解程序的一个很好的工具 但是今天在使用Mac Book的时候出现了这个问题 上网查了一下,才发现不仅是我很多人都这样情况。 下面就记录下怎么解决 参考这里 首先在 Finder 然后查找Keychain Access.app 之后根据上面文档指示创建自己的证书,这里要注意下,我当时创见证书的名字和文档的不一样也创建失败,所以我建议包括名字也要和文档中一样lldb_codesign. 然后关机重启在terminal输入下面的命令 codesign -s lldb_codesign /usr/local/bin/gdb 作者:helloworld19970916 发表于 2018/07/27 08:33:29 原文链接 https://blog.csdn.net/helloworld19970916/article/details/8 继续阅读 >>


陈苏扬 18/07/27 08:33:29
首先这是我在Git上传我电子书的时候出现的问题。 BTW, 推荐一下电子书放在GitHub很方便 remote: hooks/pre-receive.rb:47:in `’ remote: warning: YOUR-BIG-FILE is 53.66 MB; this is larger than GitHub’s recommended maximum file size of 50.00 MB remote: error: GH001: Large files detected. You may want to try Git Large File Storage - https://git-lfs.github.com. remote: error: Trace: 38bb16b8e8e0162f34fdc8517439dab5 remote: error: See http://git.io/iEPt8g for more information. re 继续阅读 >>


陈苏扬 18/07/19 12:23:54
在阿里云上源码配置Apache,还是遇到很多问题。不过还好都是解决了,所以想写一篇博客来帮助大家配置Apache. 阿里云服务器配置 Centos 6.8 首先来看看阿里云官方配置Apache教程 这看起来很简单 但是其实有很多坑 首先先按官网的下载和解压Apache的源码包 这是我遇到的其中几个问题 checking for APR… no configure: error: APR not found. Please read the documentation. checking for APR-util… no configure: error: APR-util not found. Please read the documentation. configure: error: APR-util not found. Please read the documentation. checking for pcre-config… false configure 继续阅读 >>


陈苏扬 18/07/16 08:24:54
install ZSH To install the very mystery and legendary “ZSH” , the first thing u have to do is install the same legendary “homebrew” management. If u use the MacBook Pro just like what I used , I strongly recommend install the item2 first.Just go to the website of Item2 download and install (that’s pretty easy) easy_install homebrew okay , done.(pretty easy right?) Now, we can install the “ZSH” sh -c "$(curl -fsSL https://raw.github.com/robbyrussel 继续阅读 >>


陈苏扬 18/06/20 15:26:12