一个结合指针和静态树组优势的想法。。。

Description of your first forum.

一个结合指针和静态树组优势的想法。。。

帖子Dale46 » 星期二, 2001年4月10日 17:12


指针的优势: 事先不需要设置需要多少内存,可以在程序运行中动态设置。
     不足:不能随机访问。
静态数组的优势和不足恰好相反。

我想通过2个ansistring来结合这2者的优点。
var
a,b:string;

a,用来存储字符串
b,用来存储a中的各数据占的空间
比如, s[1]:='as'; s[2]:='ppp';s[3]:='12sad'....
那么就 a:='asppp12sad....';
      b:='235';
      b中每个数代表s[i]的长度(如果超过2位,可以用其他符号间隔开)

我的理由,ansistring是动态分配的,这由程序自动完成。
         比如要访问s[3],那么可以很方便的找到s[3]的地址,实现随机访问。

请问我的想法有无可取之处?? 谢谢:)
 
 
 

一个结合指针和静态树组优势的想法。。。

帖子mikedeakins » 星期二, 2001年4月10日 17:14


你使用指针数组不就行了?不过你的想法倒是很别出心裁。
 
 
 

一个结合指针和静态树组优势的想法。。。

帖子Dale46 » 星期二, 2001年4月10日 17:21


你说的指针数组是什么??
可以随机访问嘛?
 
 
 

一个结合指针和静态树组优势的想法。。。

帖子mikedeakins » 星期二, 2001年4月10日 18:06


LPSZ [50]; // 指针数组
>>       b:='235';
>>       b中每个数代表s[i]的长度(如果超过2位,可以用其他符号间隔开)
>>
>>我的理由,ansistring是动态分配的,这由程序自动完成。
>>          比如要访问s[3],那么可以很方便的找到s[3]的地址,实现随机访问。
你这不叫做“随机访问”,访问s[1000]的时候,你必须把 string b 的前面 999 或者
1000 个字符转换为数字,然后求和,才能获得其位置。随机访问时只需要进行一次下标/
指针运算就可以获得目标的位置。
 
 
 

一个结合指针和静态树组优势的想法。。。

帖子mikedeakins » 星期二, 2001年4月10日 18:10


对了,你的每个子字符串长度都小于 10 ?
 
 
 

一个结合指针和静态树组优势的想法。。。

帖子小毛毛 » 星期二, 2001年4月10日 23:15


靠!为什么不用动态数组呢?
 
 
 

一个结合指针和静态树组优势的想法。。。

帖子crystal » 星期二, 2001年4月10日 23:55


这东西以前我也想过,使用Stream保存不定长的值,我的想法是这样:
StreamHead:定长,这个长是固定的,
Data:
   Data1:
        DataLength:Integer:纪录Data1的长度
        DataContent:保存Data1的值
   Data2:
        DataLength:Integer:纪录Data1的长度
        DataContent:保存Data1的值
依次下去,不用两个string的,因为长度纪录的数据是定长的32Bits,寻找的时候
直接4+DataLength就是下一个,但是很不爽,因为找任意不是起始数据的数据都要
遍历...
 
 
 

一个结合指针和静态树组优势的想法。。。

帖子左轻侯 » 星期三, 2001年4月11日 00:23


关注此题
 
 
 

一个结合指针和静态树组优势的想法。。。

帖子Dale46 » 星期三, 2001年4月11日 18:46


多人接受答案了。