当前位置:  开发笔记 > 编程语言 > 正文

字符数组的最佳替代品

如何解决《字符数组的最佳替代品》经验,为你挑选了1个好方法。

我们有一个数据结构

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数据结构,如可增长数组等.我们想要一个解决方案,其中大多数适用于静态字符数组的代码也适用于新结构.



1> Jimmy J..:

更好,更好/更安全:

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();

在你知道它之前,你正在编写好的代码......

推荐阅读
李桂平2402851397
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有