C++:简单计算器与排序

两个小程序

包含两个小程序,一个对数字进行计算的(也可以对其他可用类型),第二个是排序的.

C++.
image-2210

计算的小程序

逆序排序

下面的程序其实使用了上面程序中的匿名negate对象(negate会倒置传入的值).

negate原型如下:

程序如下:

C++:可调用对象与function

一点东西

题目也可以是函数表(用于存储指向可调用对象的”指针”).

上面这些可调用对象,虽然类型不同,但是共享同一种调用形式:

可以定义一个函数表,用于存储指向这些可调用对象的”指针”.当程序需要执行某个特定的操作时,
从表中查找该调用的函数.

在C++中,函数表很容易通过map来实现.

简单意思就是将与int(int,int)一样的类型,放入一个map中,将其的操作作为map的主键.

形如:

C++.
image-2208

代码实现

下面的代码可以运行,推荐一个在线运行的网址:CPP.SH

C++:解析迅雷下载地址

一个简单的说明

其实看完这个文章你会发现实现这些真的很简单,假如你问我为什么前缀要用C++(已用多语言实现),我只能说:当你用C++去解析这些的时候,你会体验到“前所未有”的“快感(痛楚)”。

大多数语言都已经实现了的功能,在C++上却要自己动手去实现。不得不说,这或许是它到目前为止还受欢迎的原因之一吧。

原理

迅雷的下载地址是用base64实现加密的,所以,你尽可以去搜索:语言+base64(当然了,C/C++的实现会让你头晕)。

C++.
image-2157

C++实现

说明一下,时间仓促,这段代码来自网络。待日后研究透彻了,在来说原理吧。

python Logo
image-2158

python实现

java标志
image-2159

Java实现

其余未完善的部分,后面在研究吧。

C++:动态内存管理

很久没写

之前有个笑话,是说:几个程序员去餐厅吃饭,那个会把盘子放回原地的一定是C/C++程序员,因为他们要自己清理内存.

好了,来上题目.

编写函数,返回一个动态分配的int的vector.将此vector传递给另一个函数,这个函数读取标准输入,将读入的值保存在vector元素中.再将vector传递给另一个函数.打印读入的值.记得在恰当的时候delete vector.

小心:动态内存管理容易出错

使用new和delete管理动态内存存在三个问题:

  1. 忘记delete内存,会导致内存泄漏,而且不容易发现.
  2. 使用已经释放掉的对象.有时可以检测出这种错误.
  3. 同一块内存释放两次.

相对于发现“罪证”,制造“罪证”显然容易多了。

C++.
image-2150

源代码

C++:单词计数

问题

单词计数程序,有序和无序版本.

C++.
image-2147

有序源码

无序源码