C++ Builder 初学问与答(十七)
2008-03-08 21:36:22 来源:WEB开发网核心提示:7)Set类如何用?答:严格来说,CB的集合(Set)并不是一个类,C++ Builder 初学问与答(十七),而是一个类模板(Class Template),它用来实现集合这个抽象数据类型,尤其是在涉及到按时循环时,在我编写的春辉网络电视里有一段OnTimer事件代码,使用它可以定义一个实际的集合类型,它的一般声明模
7)Set类如何用?
答:严格来说,CB的集合(Set)并不是一个类,而是一个类模板(Class Template)。它用来实现集合这个抽象数据类型。
使用它可以定义一个实际的集合类型,它的一般声明模式是这样的:
typedef Set<type,minval,maxval>ClassName; 其中type用来指定集合元素的类型;minval指定集合元素的最小值;maxval指定集合元素的最大值。
举个例子来说,若是我们定义一个以TupperSet为名的集合类,这个集合类的可能元素为26个大写字母,我们可以这样定义:
typedef Set<char,’A’,’Z’>TupperSet;
应用时我们可以使用这个集合类声明一个具体的集合对象,如:
TupperSet UpperSet;
8)能不能告诉我一下Set类有哪些常见的使用方法或操作符?
答:当然可以了,以下是它的一些常见操作符和方法:
Clear方法:清除集合对象内的所有元素,使集合成为空集;
Contains方法:查询集合中是否包含指定的元素,其声明为:
bool _fastcall Contains(const T el)const;
Operator-:两个集合进行求差运算,结果集合包含两个集合中不相同的元素;
operator*:求两个集合的交集;
operator+:求两个集合的并集;
operator<<:添加一个元素到指定集合;
operator>>:从集合中删除一个指定元素。
其实Set类的应该比较广泛,比如判定我们是否按下鼠标左键,可以用如下的语句:
if(Shift.Contains(ssLeft))。
9)听说在CB中有一个可以定时触发的组件,能否介绍一下它的属性和事件吗?
答:你说的是Timer组件,它位于组件栏的System组件页中。使用它并不难,因为他的属性、事件非凡少:
Enabled属性:布尔类型。缺省时为true,这时定时器将经过一段时间就触发OnTimer事件。在这个属性从false变为true时,时钟将重新开始计时。
Interval属性:这个属性用来设置每隔多长时间就触发一次OnTimer事件,以毫秒为单位。缺省为1000毫秒。
OnTimer事件:这个事件在Enabled属性设置为true时,每隔Interval属性指定的时间触发一次。
10)原来Timer组件如此简单,但我还有些不懂为什么说它是一个可找替循环语句,能否举一个例子说明下OnTimer事件?
答:它不能取替循环语句的,当然在特定条件下,他比循环语句更有效,尤其是在涉及到按时循环时。在我编写的春辉网络电视里有一段OnTimer事件代码,可供大家参考:
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
String s1="春辉(CH)软件 作者:董维春 王岩 CH工作室";
if(i<=54)
{
Label1->Caption=s1.SubString(i,18);
i+=2;
}
else
{
i=1;
}
}
(未完待续) 更多内容请看C/C++技术专题专题,或
答:严格来说,CB的集合(Set)并不是一个类,而是一个类模板(Class Template)。它用来实现集合这个抽象数据类型。
使用它可以定义一个实际的集合类型,它的一般声明模式是这样的:
typedef Set<type,minval,maxval>ClassName; 其中type用来指定集合元素的类型;minval指定集合元素的最小值;maxval指定集合元素的最大值。
举个例子来说,若是我们定义一个以TupperSet为名的集合类,这个集合类的可能元素为26个大写字母,我们可以这样定义:
typedef Set<char,’A’,’Z’>TupperSet;
应用时我们可以使用这个集合类声明一个具体的集合对象,如:
TupperSet UpperSet;
8)能不能告诉我一下Set类有哪些常见的使用方法或操作符?
答:当然可以了,以下是它的一些常见操作符和方法:
Clear方法:清除集合对象内的所有元素,使集合成为空集;
Contains方法:查询集合中是否包含指定的元素,其声明为:
bool _fastcall Contains(const T el)const;
Operator-:两个集合进行求差运算,结果集合包含两个集合中不相同的元素;
operator*:求两个集合的交集;
operator+:求两个集合的并集;
operator<<:添加一个元素到指定集合;
operator>>:从集合中删除一个指定元素。
其实Set类的应该比较广泛,比如判定我们是否按下鼠标左键,可以用如下的语句:
if(Shift.Contains(ssLeft))。
9)听说在CB中有一个可以定时触发的组件,能否介绍一下它的属性和事件吗?
答:你说的是Timer组件,它位于组件栏的System组件页中。使用它并不难,因为他的属性、事件非凡少:
Enabled属性:布尔类型。缺省时为true,这时定时器将经过一段时间就触发OnTimer事件。在这个属性从false变为true时,时钟将重新开始计时。
Interval属性:这个属性用来设置每隔多长时间就触发一次OnTimer事件,以毫秒为单位。缺省为1000毫秒。
OnTimer事件:这个事件在Enabled属性设置为true时,每隔Interval属性指定的时间触发一次。
10)原来Timer组件如此简单,但我还有些不懂为什么说它是一个可找替循环语句,能否举一个例子说明下OnTimer事件?
答:它不能取替循环语句的,当然在特定条件下,他比循环语句更有效,尤其是在涉及到按时循环时。在我编写的春辉网络电视里有一段OnTimer事件代码,可供大家参考:
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
String s1="春辉(CH)软件 作者:董维春 王岩 CH工作室";
if(i<=54)
{
Label1->Caption=s1.SubString(i,18);
i+=2;
}
else
{
i=1;
}
}
(未完待续) 更多内容请看C/C++技术专题专题,或
更多精彩
赞助商链接