Data Structures with C++ Using STL Chapter 1数据结构入门---笔记

1.2

Abstract Date Type ---- ADT

ADT操作描述

操作名称:指定输入参数、数据结构元素的操作类型和输出值的动作语句

前提条件:输入参数必须满足的条件以及使操作成功执行的对象状态

后置条件:操作操作引起的数据结构中数据的变化

(如果操作没有前提和后置条件,ADT操作描述将忽略这些条件)

例:time24 ADT

addTime(m):通过增加m分钟来更新当前时间,并将小时和分钟调整到指定范围。

后置条件:新时间是增加m分钟之后的值。

1.3

C++类

class className
{
     public:
         //公共成员函数原型
         ......
     private:
         //私有数据成员
         .......
         //私有成员函数原型
         .......            
};

private:类的成员函数才可以访问

public:任何语句均可访问

构造函数(constructor):名称和类名相同,初始化对象

time24(int h = 0;int m =0)
time24(int h = 0;int m =0):itemA(a),itemB(b)
//0是默认值,如初始化时传入其他值,则为传入值

常量成员函数:操作不改变对象中的任何数据

int getHour()  const;
//函数实现时,只要更新了数据成员,编译器就会报错

参数类型

returnType functionName(type a,type& b)
//a是数值参数,b是引用参数

使用引用,不需要进行值复制,系统只需要提供它的内存地址,可以提高效率。但潜在问题是函数可能使用引用参数访问原始对象的数据,并错误地更新这些数据的值。C++可通过常量引用传递对象。

returnType functionName(const type& arg1,....)
//具有常量引用参数的函数原型

1.4

类函数的外部实现,在函数头中的函数名前添加“className::”,“::”符号是作用域解析运算符,告诉编译器该函数时类成员,函数体中的语句可以访问类成员

returnType className::functionName(argument list)
{
     //c++语句
}

1.5

time24 tA(11,30),tB,tC;
//tA初始化为11:30,tB和tC默认为0:00

1.6

c++允许程序员将实现代码(也称嵌入码)作为类声明的一部分。C++处理嵌入码函数调用的方法与处理标准函数的方法不同。编译器使用函数体中的所有语句替代函数调用,这样会使源代码量增加,但减少了函数的调用和返回,可以调高效率。

1.7

Application Programming Interface ------ API

数学中指定了出现随机数的多种情况,但比较直观的描述时:在一定范围内,任何数发生的几率或概率相等时,这些数是随机的

计算机随机数发生器的作用是创建长随机序列。发生器首先得到初始数据值,称为种子,然后使用算术计算生成随机数。算法更新种子的值,并在随机数的下一个计算中使用新的值。这个过程时决定性的(deterministic)。它获取当前的种子,并使用一系列指定的计算来说明计算下一个随机数。整个过程依赖于种子的初始值,所以计算机产生的是伪随机。

randomNumber API

randomNumber(int seed = 0)
//设定随机数发生器的种子
//后置条件:使用默认值0时,系统时钟初始化种子;否则,用户提供发生器的种子
double frandom();
//返回实数x,0.0<= x< 1.0
int random();
//返回32为随机整数m,0<= m <231-1
int random(int n);
//返回随机整数m,0 <=m <n

1.8

第1种结构为C语言风格的字符串,它源自C程序设计语言,由字符数组组成,以NULL字符(ASCII值为0)结尾。第2种结构是类,它将字符串定义为对象,并提供在字符串中访问单个字符和字符集的操作。标准C++库提供字符串类,程序员使用#include<string>访问这个类

//从istr输入字符,并将它们赋予str字符串
//当遇到分界符时停止,不将它放到字符串中
//如果省略分界符,则默认为‘\n’,函数输入整个文本行
//函数返回istream&,使程序员可以测试输入后流的状态
istream& getline(istream& istr,string& str,char delim=‘\n’);
int find_first_of(char c,int start=0);
//查找字符串中第一个出现的C,由位置start开始,有匹配返回位置,否则返回-1
int find_last_of(char c);
//查找字符串中最后一个出现的C。由匹配返回位置,否则返回-1
string substr(int start=0,int count=-1);
//从起始位置开始复制字符串中的count个字符,并返回这些字符作为子串。
int find(const string& s,int start=0);
//该搜索获得字符s和位置start,并查找s的匹配作为子串。
void insert(int start,const string& s);
//将子串s放入字符串中,起始于位置start,插入操作增加了原始的字符串长度。
void erase(int start=0,int count=-1);
//从start开始,从字符串中删除count个字符。
char *c_str();
//返回一个等价于字符串对象的C语言风格字符串的地址。
posted @ 2012-11-18 13:39  茉莉花茶  阅读(247)  评论(0编辑  收藏  举报