我们有一个数据结构
struct MyData { int length ; char package[MAX_SIZE]; };
其中MAX_SIZE是固定值.现在我们想要更改它以支持大于MAX_SIZE的"无限"包长度.建议的解决方案之一是用指针替换静态数组,然后根据我们的要求动态分配大小
struct MyData { int length ; char* package; };
然后
package = (char*)malloc(SOME_RUNTIME_SIZE) ;
现在我的问题是,这是满足要求的最有效方式还是有任何其他方法......可能使用STL数据结构,如可增长数组等.我们想要一个解决方案,其中大多数适用于静态字符数组的代码也适用于新结构.
更好,更好/更安全:
struct my_struct { std::vectorpackage; };
调整大小:
my_struct s; s.package.resize(100);
看看有多大:
my_struct s; int size = s.package.size();
您甚至可以将函数放在结构中以使其更好:
struct my_struct { std::vectorpackage; void resize(int n) { package.resize(n); } int size() const { return package.size(); } }; my_struct s; s.resize(100); int z = s.size();
在你知道它之前,你正在编写好的代码......