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