多个关键字排序化成单个关键字排序

比如,我们某些大学为了选拔在主科上更优秀的学生,要求对所有学生的所有科目总分降序排名,并且在同样总分的情况下将语数外总分做降序排序。这就是对总分和语数外总分两个关键字的组合排序。

对于组合排序的问题,当然可以先排序总分,总分相等的情况下再排序语数外总分,这是通常的思维。

其实,我们还可以应用一个技巧来实现一次排序即完成组合排序问题。例如,把总分与语数外都当成字符串首尾连接在一起(注意语数外总分如果位数不够三位,需要在前面补零)很容易就可以得到令狐冲的753229要小于张无忌的753236,于是张无忌就排在令狐冲的前面。

从以上可以看出,多个关键字的排序最终都可以转化为单个关键字的排序

C++虚函数

一:虚函数

C++继承的难点,不在继承,而是在虚函数。之所以会有“虚函数”这个概念,是因为先有了“继承”这个概念,然后才出现了灵活多变的“虚函数”。可以说,没有继承,就没有虚函数。

简单地说,虚函数是C++用于实现多态的机制。

函数前面加一个virtual,就可以通过父类指针随意地调用各个子类的同名函数,用一个指针实现了不同的运行效果,达到多态的妙处,这就是常说的虚函数的主要用途。

C++中内存存储区分配情况

在C/C++中,通常可以把内存理解成4个分区:栈、堆、全局/静态存储区和常量存储区

(1)栈:通常是用于那些在编译期间就能确定存储大小的变量的存储区,用于在函数作用域内创建、在离开作用域后自动销毁的变量的存储区。通常是局部变量。函数参数等的存储区。它的存储空间是连续的,两个紧挨着定义的局部变量,它们的存储空间也是紧挨着的。栈的大小是有限制的,通常Visual C++编译器默认栈的大小事1MB,所以不要定义int a[10000000]这样的超大数组。

(2)堆:通常是用于那些在编译期间不能确定存储大小的变量的存储区,它的存储空间是不连续的。一般由malloc(或new)函数来分配内存块,并且需要用free(或delete)释放内存。如果程序员没有释放掉那么就会出现常说的内存泄露问题。需要注意的是,两个紧挨着定义的指针变量所指向的malloc出来的两块内存并不一定是紧挨着的。另外需要注意的一点是,堆的大小几乎是不受限制的,理论上每个程序最大可达4GB

Mongodb在Windows下的安装及配置

注:此文系转载,转载出处:http://blog.csdn.net/liuzhoulong/article/details/6124566

1.下载mongodb的windows版本,有32位和64位版本,根据系统情况下载,下载地址

2.解压缩至E:/mongodb即可

3.创建数据库文件的存放位置,比如D:/mongodb/data/db。启动mongodb服务之前需要必须创建数据库文件的存放文件夹,否则命令不会自动创建,而且不能启动成功。默认文件夹路径为c:/data/db.使用系统默认文件夹路径时,启动服务无需加–dbpath 参数说明,但文件夹还要手工创建

4.打开cmd命令行,进入D:/mongodb/bin目录,输入如下的命令启动mongodb服务:
D:/mongodb/bin>mongod.exe –dbpath D:/mongodb/data/db