c++ - 在c中如何在没有 vector 和结构数组的情况下拥有可变数量的结构?

标签 c++ c arrays structure

有关更多详细信息,我需要创建一个程序,从输入中读取名称、地址、城市/州和邮政编码,并将它们放入保存所有这些信息的结构中,例如

   struct person
   {
     char name[100];
     char address[100];
     char citystate[100];
     char zipcode[5];
   }

我需要我的程序能够处理用户的任何数量的输入。如果用户输入500个人的信息,需要创建500个结构,如果输入1000组信息,我需要1000个结构(struct person变量?),等等。

问题是我可能不会使用结构数组,因此我不能简单地 malloc 结构数组来保存任何数量的信息...

我如何完成所需的任务?

此外,作为一个附带问题,一旦我读入并存储信息,我需要一个指向每个结构的指针数组,这样我就可以比传递整个结构更有效地对函数进行排序。我想这可以通过创建一个动态指针数组来完成,但有人建议我使用静态声明的数组,这是为什么?

如果这个问题不够具体,我们深表歉意,如果需要更多详细信息,请提及,我会尽力补充。

最佳答案

在 C++ 中,您可能想要这样做:

struct person
{
  std::string name;
  std::string address;
  std::string citystate;
  char zipcode[5];
};

std::vector<person> people;

这是一种创建一个未知数量的、易于迭代的类型的容器的方法。您可以充分利用algorithms library完成所有排序、搜索等操作。引用 STL 的原始创建者 Alex Stepanov 的话:

Use vectors whenever you can. If you cannot use vectors, redesign your solution so that you can use vectors.

关于c++ - 在c中如何在没有 vector 和结构数组的情况下拥有可变数量的结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30090297/

相关文章:

c - 打印出来的字母出现次数最多

arrays - 简单但具体的数组编译错误(C)

c - 基本死锁问题,多个函数中的一个互斥锁

javascript - 对 `RexExp.prototype.exec`的返回值类型感到困惑

c# - 为混合代码 DLL 中_caught_ SEH 异常生成小型转储

c++ - Premake 无法在 Linux 上使用 g++?

c++ - 如何让 Sublime Text 3 编译当前目录中的特定文件? C++

c++ - 接口(interface)和公共(public)方法

c# - 如何将IP地址转换成MAC地址字节数组?

arrays - Julia:使用自定义比较器按行对矩阵进行排序