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