2012年2月8日

摘要: 动态规划,自底往上:经常出现同样形式的子问题。关键技术,存储这些子问题 链形自底往上(生产线),树形自底往上(矩阵乘) 采用动态规划:最优子结构,重叠子问题 采用备忘录方法,充分利用重叠子问题性质 ...先写出最差的递归or循环的程序(自顶向下),寻找重叠子问题,寻找动态规划(自底向上) 阅读全文

posted @ 2012-02-08 23:34 无忧consume 阅读(179) 评论(0) 推荐(0) 编辑

摘要: main处理命令行,一般两个参数或是无参数,第一个argc是值变量个数,argv是C风格的字符串数组 argv[0],argv[1],argv[2]... 内联函数,编译时就讲函数,展开,减少减少写成函数的额外执行开销 一旦删除指针,delete p; p编程悬垂指针,即指向原来位置,但是该位置无效,往往导致程序错误,因此应该吧指针赋值0(NULL) 重载:基于函数的形参const与否可以调用哪个函数,因此可以作为重载依据。 注意:1、依据非const可以嫁给const所以当调用的实参是非const时候,两个函数皆可 2、仅当形参是引用或指针时,形参是否为const才有效。... 阅读全文

posted @ 2012-02-08 22:56 无忧consume 阅读(103) 评论(0) 推荐(0) 编辑

摘要: 头文件#include<bitset>bitset模板类,长度<>(常数或是define的常量或是const常量话的常量)string初始化bitset,反向赋值,string必须为1 0 组合,缺少的补0。bitset<len> bitval1(str, start, end)。start和end可以缺省,缺省分别默认0,END 阅读全文

posted @ 2012-02-08 22:54 无忧consume 阅读(266) 评论(0) 推荐(0) 编辑

摘要: Boost智能指针——shared_ptrboost::scoped_ptr虽然简单易用,但它不能共享所有权的特性却大大限制了其使用范围,而boost::shared_ptr可以解决这一局限。顾名思义,boost::shared_ptr是可以共享所有权的智能指针,首先让我们通过一个例子看看它的基本用法:#include<string>#include<iostream>#include<boost/shared_ptr.hpp>classimplementation{public:~implementation() { std::cout <<& 阅读全文

posted @ 2012-02-08 22:21 无忧consume 阅读(144) 评论(0) 推荐(0) 编辑

摘要: 概述 在前面各章中,已多次使用过以“#”号开头的预处理命令。如包含命令# include,宏定义命令# define等。在源程序中这些命令都放在函数之外, 而且一般都放在源文件的前面,它们称为预处理部分。 所谓预处理是指在进行编译的第一遍扫描(词法扫描和语法分析)之前所作的工作。预处理是C语言的一个重要功能, 它由预处理程序负责完成。当对一个源文件进行编译时, 系统将自动引用预处理程序对源程序中的预处理部分作处理, 处理完毕自动进入对源程序的编译。 C语言提供了多种预处理功能,如宏定义、文件包含、 条件编译等。合理地使用预处理功能编写的程序便于阅读、修改、 移植和调试,也有利于模块化程序... 阅读全文

posted @ 2012-02-08 22:09 无忧consume 阅读(225) 评论(0) 推荐(0) 编辑

摘要: 《c++primer》学习随笔——预处理器变量 #define 指示的接受后面的名字,并把这个名字定义为预处理器变量,常用大写。 #ifndef 字面意思就是if not define 如果没有定义。就是如果后面的名字没有被定义成预处理器变量,那么这句话后所有的程序都将被执行,直到遇见#endif 说明具体用法和意义。 假如我自己写了两个头文件one.h,和two.h。其中one.h包括的是一个类的定义;two.h由于也要用到这个类,所以这个头文件里面必然要有一行程序: #include“one.h”。 而我们的主程序里面,开始必然要把我们自己定义的头文件给加进去,必然应该有两行程... 阅读全文

posted @ 2012-02-08 21:10 无忧consume 阅读(300) 评论(0) 推荐(1) 编辑

摘要: 类(class) {}; 定义了类就定义了新类型,类名就是类型的名字 类内的成员可以访问类内的任何成员 定义类class和struct仅仅是访问默认权限的区别 阅读全文

posted @ 2012-02-08 21:01 无忧consume 阅读(98) 评论(0) 推荐(0) 编辑

摘要: #define是C语言中提供的宏定义命令,其主要目的是为程序员在编程时提供一定的方便,并能在一定程度上提高程序的运行效率,但学生在学习时往往不能 理解该命令的本质,总是在此处产生一些困惑,在编程时误用该命令,使得程序的运行与预期的目的不一致,或者在读别人写的程序时,把运行结果理解错误,这对 C语言的学习很不利。1 #define命令剖析1.1 #define的概念 #define命令是C语言中的一个宏定义命令,它用来将一个标识符定义为一个字符串,该标识符被称为宏名,被定义的字符串称为替换文本。该命令有两种格式:一种是简单的宏定义,另一种是带参数的宏定义。(1) 简单的宏定义: #def... 阅读全文

posted @ 2012-02-08 15:26 无忧consume 阅读(373) 评论(0) 推荐(1) 编辑

摘要: c++是一门静态类型语言,在编译时会做类型检查 左值: 可以出现在赋值语句左边或右边 右值: 可以出现在赋值语句的右边,不能出现在左边赋值初始化,直接初始化差别很微妙的(13章): 复制初始化(copy-initialization) 用等号(=) int a = 10; 直接初始化(direct-initialization) 放在括号中 int a(10); 更灵活,效率高 p42 一般来讲,赋值初始化,右侧会涉及到构造初始函数,之后在赋值给左侧(以类为鉴) 类一般有默认够着函数,以string类为例,string类定义了默认的够着函数来初始化string变量为空字符串,即... 阅读全文

posted @ 2012-02-08 15:16 无忧consume 阅读(192) 评论(0) 推荐(1) 编辑


Copyright © 2024 无忧consume
Powered by .NET 9.0 on Kubernetes