◆关于链表与TList的比较

Dala 2003-08-11 11:58:58
数据结构中有一个链表类,大家应该熟悉,各数据之间一环套一环;
其实BCB中的TList可以代替链表来使用,虽然数据不是一环套一环,但可以用Index属性来映射数据。但不知二者在使用方便性及运行的系统开销以及速度上有什么主要差异。
请各路大虾们不吝指点一二。
谢谢!
...全文
160 31 打赏 收藏 转发到动态 举报
写回复
用AI写文章
31 条回复
切换为时间正序
请发表友善的回复…
发表回复
oldcold 2003-08-23
  • 打赏
  • 举报
回复
学习
zjqyb 2003-08-23
  • 打赏
  • 举报
回复
更正我上面的说法,深深的感到没有实践就不能乱发言,这主要是我平常不喜欢用STL的缘故
(用STL太罗嗦,我个人觉得还是少用STL为妙)
Release和Debug 模式用了STL的话,还是有很大区别,我看主要是STL里面用了好多Assert的缘故,怪不得平时不觉得有多大区别(主要是没有用STL),用CB的时候很少去关注Release和Debug ,用VC的话就要关注Release和Debug,调试我觉得特烦,所以我永远支持Borland
zjqyb 2003-08-22
  • 打赏
  • 举报
回复
vector的实现是非常优化的,比TList或者TObjectList要快的多,我持怀疑态度,
测试一下如何
innocentlogin 2003-08-22
  • 打赏
  • 举报
回复
#include <list>
#include <iostream>
#include <iterator>

using namespace std;

//using list
list<int> lst;
for(int i=0;i<10;++i)
list.push_back(i);

for(list<int>::iterator it=lst.begin();it!=lst.eng();++it)
cout<<*it;

Siney 2003-08-22
  • 打赏
  • 举报
回复
首先stl里提供了链表,不管是单项,双向都提供了,不过既然楼主问效率和系统开销,我就告诉你,你既然学习过数据结构,就应该知道数组的访问速度最快,与之对应的stl是vector,但vector是最消耗资源,而且也是最花费cpu开销的,为什么?数据结构上有说,你去自己看吧、而链表是最不消耗资源,而且添加删除速度非常块,但寻址速度慢。

TList的实现是以数组为基础的,也就是说他类似于vector,但TList是类型不安全,关于这点(你可以到我的网站上看一篇文章http://siney.yeah.net),所以强烈推荐使用vector,而且vector的实现是非常优化的,比TList或者TObjectList要快的多。
windlyzhang 2003-08-22
  • 打赏
  • 举报
回复
当然可以了,你可以自己定义一个链表嘛!其中的遍力,插入,删除,查找,都自己来写函数,其实也挺简单的,关键是自己要设计好功能。
Dala 2003-08-22
  • 打赏
  • 举报
回复
学习了STL的list类,果然不错,只是在遍历list中所有元素时不很方便(如果是我没搞明白,望楼上哪位给个例子)。
如果自己定义一个简单的list类,用模板来限制一个list对象只保存同一类型的数据,不知各位是否觉得可行?
lvjack 2003-08-22
  • 打赏
  • 举报
回复
我的P4 1.8 256M xp+bcb6+sp4
aceouter 2003-08-22
  • 打赏
  • 举报
回复
P4-1.6, 256M, WIN2K+SP4, BCB5+SP1
#include <vector>

Release:
TList //2000
vector //1900

Full Debug:
TList //1900
vector //>9500
lvjack 2003-08-22
  • 打赏
  • 举报
回复
list
1546
1563
1547
1594
1531

vector
1547
1594
1547
1531
1578

我看不出来了



Siney 2003-08-22
  • 打赏
  • 举报
回复
to zjqyb()

我的意思是不要加<vector.h> 它和<vector>是有区别的
柯本 2003-08-22
  • 打赏
  • 举报
回复
我又测了一下,那个先点那个快!都是1800左右
(可能是我的机器太快了...)
xuv2002 2003-08-22
  • 打赏
  • 举报
回复
呵呵
P4 1.6 1256 win2k+bcb6+sp4

TList 耗时 1600
vector 耗时 1600+ 差不多

个人习惯
假如是小量的同类型指针数组,例如一系列的Button指针,
用TList 写起来方便些

xuv2002 2003-08-22
  • 打赏
  • 举报
回复
呵呵
P4 1.6 1256 win2k+bcb6+sp4

TList 耗时 1600
vector 耗时 1600+ 差不多

个人习惯
假如是小量的同类型指针数组,例如一系列的Button指针,
用TList 写起来方便些


zjqyb 2003-08-22
  • 打赏
  • 举报
回复
换个好一点机器试一下
我可是 celeon 450 ,128M ,win2k/bcb6+sp4

不加 #include <vector> 我编译能通过!!!
zjqyb 2003-08-22
  • 打赏
  • 举报
回复
和release模式应该没什么关系
Siney 2003-08-22
  • 打赏
  • 举报
回复
#include <vector> //注意这里

我又测试了一遍,还是vector的快,我的是bcb6+sp4+win2kpro + release模式

请大家帮忙测试一下,请不要使用bcb5,bcb5自带的那个stl不如bcb6的快.
Siney 2003-08-22
  • 打赏
  • 举报
回复
不会吧,相差这么远,我的是release模式

计算机是破了一点,大家不要见笑:)
zjqyb 2003-08-22
  • 打赏
  • 举报
回复
使用 BCB 中的数据结构多
柯本 2003-08-22
  • 打赏
  • 举报
回复
再测:
c1.0G 64M (直接调用已生成的exe) win98
TList //2868
vector //3905

加载更多回复(11)

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧