BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #14912同步于 2008/10/29
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

结构体怎么存储可变数据?

white127
2008/10/29镜像同步14 回复
假设结构体里面可能有1-100个成员,成员的个数是不定的,每个成员都是一个不能预知 长度(假设有上限)的字符串,具体的字符串要在程序运行的时候才能获取,应该怎么构 造这个结构体,尽量的节省内存空间? 初步是想设置100个字符串指针,不使用的就直接置为NULL,但是这样还是会浪费一些不 用的指针,请问还有更好的方法吗?
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
purevirtual机器人#1 · 2008/10/29
如果用c++的话可以直接用stl 【 在 white127 (瓜牛) 的大作中提到: 】 : 假设结构体里面可能有1-100个成员,成员的个数是不定的,每个成员都是一个不能预知 : 长度(假设有上限)的字符串,具体的字符串要在程序运行的时候才能获取,应该怎么构 : 造这个结构体,尽量的节省内存空间? : ...................
purevirtual机器人#2 · 2008/10/29
纯c里面可以自己定义一个string的struct,大致思路是先分配给每个struct 20个char,如果超过大小的话,再动态的增加大小,然后把原来的字符串拷到新的字符串里 【 在 white127 (瓜牛) 的大作中提到: 】 : 假设结构体里面可能有1-100个成员,成员的个数是不定的,每个成员都是一个不能预知 : 长度(假设有上限)的字符串,具体的字符串要在程序运行的时候才能获取,应该怎么构 : 造这个结构体,尽量的节省内存空间? : ...................
ericyosho机器人#3 · 2008/10/29
有啊,做一个指针的链表。 如果你的那些字符串不都是一两个字符的话,那些next的指针开销还是很划算的。
purevirtual机器人#4 · 2008/10/29
关键是lz说每个成员的长度也是不可预知的 【 在 ericyosho (ericyosho) 的大作中提到: 】 : 有啊,做一个指针的链表。 : 如果你的那些字符串不都是一两个字符的话,那些next的指针开销还是很划算的。
ericyosho机器人#5 · 2008/10/29
有问题么? 就相当于struct里面仅仅有一个二维数组的头指针。 这个二维数组的行与行之间是用链表串起来的,都是new出来的。 每一行就是本身存放的string的那个char * LZ提的方案是char*的数组么,这次把数组本身也用链表换掉了…… =。= 【 在 purevirtual 的大作中提到: 】 : 关键是lz说每个成员的长度也是不可预知的
purevirtual机器人#6 · 2008/10/29
好吧,不过每次显式的new ,100个啊 大小如何确定呢? 1:预设好 那就没意义了 2:每次手动 100个啊 【 在 ericyosho (ericyosho) 的大作中提到: 】 : 有问题么? : 就相当于struct里面仅仅有一个二维数组的头指针。 : 这个二维数组的行与行之间是用链表串起来的,都是new出来的。 : ...................
ericyosho机器人#7 · 2008/10/29
没需求,没真理…… 可以struct里面放一个size的变量,表示存了多少个string。 也可以每一次就从头上往下走,走到null了,就表示走完了呗。 【 在 purevirtual 的大作中提到: 】 : 好吧,不过每次显式的new ,100个啊 大小如何确定呢? : 1:预设好 那就没意义了 : 2:每次手动 100个啊
purevirtual机器人#8 · 2008/10/29
好吧,我晕了 要我宁愿自己写个string算了 【 在 ericyosho (ericyosho) 的大作中提到: 】 : 没需求,没真理…… : 可以struct里面放一个size的变量,表示存了多少个string。 : 也可以每一次就从头上往下走,走到null了,就表示走完了呗。 : ...................
ericyosho机器人#9 · 2008/10/29
C里面的struct,抽象能力和功能还是太弱了。 觊觎C++里面的struct啊,就是一个不用管访问权限的class,而且还有构造和析构,各种好用。