c++编程

2014/12/30 11:46:44翻牌: 1984临幸: 1
  对于acm新人来说,大家觉得最诡异的就是一道题同样的代码,用g++过了,换成c++死活不过。更诡异的是返回的却是wa而不是re。对于这种情况,新人们肯定会吐槽一下。这里我来总结一下其中几点缘由。    大的原因有三个,一个是代码本身存在越界情况,二是代码使用了过多的栈空间,三是代码中关于浮点数的处理有问题。这里主要解释前两种情况,第三种情况资料较多,不解释了。    对于情况一,先上一段代码#include int main() {    int a=1, c=2, b[5],t[10], i;    printf("%x,%x,%x\n",b,&c,&a);    for (i=...
2014/12/30 12:16:46翻牌: 2949临幸: 0
    这个程序是在大三上学期期末之后实现的,当时手机上有一个推箱子游戏,有 几关怎么也过不去,一怒之下写了个程序,加了几个优化之后,效率还凑合。最坏情况下也可以在几秒时间内解出7*7的推箱子,一般关卡基本上1秒之内。这个 程序还有很大的优化空间的,只是写时间长了,就不想去继续优化了。    程序简介    采用广度优先搜索,自己实现了简单的hashMap用以存储状态    程序从 in.txt 读入数据,第一行是一个数,表示数据有几关,下面是若干个字符矩阵,给一组输入样例5###########*@*######*#D**###*BO*O*###**DD*######*#O######*...
2015/1/1 2:39:27翻牌: 2330临幸: 2
1. string介绍(1)string类的构造函数如下:     a) string s; //生成一个空字符串s     b) string s(str) //拷贝构造函数 生成str的复制品     c) string s(str,stridx) //将字符串str内"始于位置stridx"的部分当作字符串的初值     d) string s(str,stridx,strlen) //将字符串str内"始于stridx且长度顶多strlen"的部分作为字符串的初值     e) string s(cstr) //将C字符串作为s的初值     f) string s(chars,cha...
2015/1/10 9:1:37翻牌: 5110临幸: 3
    spimi算法实现的倒排索引的构建,并且对倒排索引进行了Gamma编码压缩,对词典进行了单一字符串压缩,分别写入了二进制的倒排索引文件和词典文件。源码可以在这里下载。http://download.csdn.net/detail/longmenwaideyu/8348061这其实是我刚刚上交了的现代信息检索的作业。spimi算法    内存式单遍扫描索引构建算法SPIMI(Single-pass in-memory indexing)基本思想如下    关键思想1: 对每个块都产生一个独立的词典--不需要在块之间进行term-termID的映射    关键思想2: 对倒排记录表不排序,...
2015/1/13 14:27:21翻牌: 3322临幸: 2
    静态变量作用范围在一个文件内,如果其他文件需要访问,要事先extern。程序开始时分配空间,结束时释放空间,默认初始化为0,使用时可以改变其值。静态变量存放在静态变量区。     在C中引入关键字static是为了表示退出一个块后仍然存在的局部变量。随后,static在C中有了第二种含义:用来表示不能被其它文件访问的全局变量和函数。为了避免引入新的关键字,所以仍使用static关键字来表示这第二种含义。最后,C++重用了这个关键字,并赋予它与前面不同的第三种含义:表示属于一个类而不是属于此类的任何特定对象的变量和函数。    当我们同时编译多个文件时,所有未加static前缀的全局变量...
2015/1/14 4:5:53翻牌: 2282临幸: 0
const关键字可以修饰很多东西使其变成常量,用以保护被修饰的东西,下面我列出了一些我遇到的使用情况。指针常量和常量指针    const修饰指针的时候,可以按*号分成左右。如果const在*左面,那么就是指针常量(pointer to const),意味着*p这个值不能变,也就是说不能通过这个指针修改它指向的那块地址的值。如果const在*右面,那么就是常量指针(const pointer),这个指针可以通过*x的方式修改地址的值,那时不能通过x=&b的形式修改x中的地址。如下图,指针常量是黄色地址内的值不变,常量指针是蓝色地址内的值不变。#include <stdio.h> int ma...
2015/1/14 9:15:7翻牌: 2003临幸: 5
    C++用virtual关键字支持多态性。virtual修饰的函数称为虚函数。虚函数的调用是基于运行时对象的真实类型决定的,而非虚函数在编译时就已经根据对象定义的类型决定了。#include <cstdio> class Base { public:     int a;     Base() {         printf("Base constructor\n");     }     void fun1() {         printf("Base fun1\n");     }     virtual void fun2() {         p...
2015/12/3 7:23:43翻牌: 8580临幸: 0
    最近在移植一份神代码,遇到各种问题。好多个都是内存越界的原因。今天遇到了free(): corrupted unsorted chunks。以前也看过一点关于free是如何释放内存的东西,好久没写博客了,顺道写点吧,老玩也不是个事。    先说一下free(): corrupted unsorted chunks是什么原因。当要释放的内存在使用的时候发生了越界,将这块内存前后的一些信息改掉,就会发生这个错误。malloc和free在debug版下,会在分配的内存前后加上一些额外的信息。大体上是内存的前面32字节是一个结构体,里面记录了分配的内存的大小,4字节的校验位,以及其他信息。内存...