如何在结构中动态添加数据,该结构是指针数组的指针

时间:2015-05-08 12:02:53

标签: c++ arrays pointers struct structure

我有两种结构如下:

typdef struct abc
{
   int id;
   char name;
}s_abc,*lpabc;
typdef struct result
{
    int acc_no;
    lpabc *details;
}s_res;

我需要在结构结果中动态添加数据,指出指针数组,即:struct abc 结构abc可以是例如5个值的数组。 我该如何添加值?

定义的结构是明确的: 为了更好地理解我附上以下结构: -

typedef struct _wfs_cdm_physicalcu
{
    LPSTR                 lpPhysicalPositionName;
    CHAR                  cUnitID[5];
    ULONG                 ulInitialCount;
    ULONG                 ulCount;
    ULONG                 ulRejectCount;
    ULONG                 ulMaximum;
    USHORT                usPStatus;
    BOOL                  bHardwareSensor; 
 } WFSCDMPHCU, *LPWFSCDMPHCU;

typedef struct _wfs_cdm_cashunit
{
    USHORT                usNumber;
    USHORT                usType;
    LPSTR                 lpszCashUnitName;
    CHAR                  cUnitID[5];
    CHAR                  cCurrencyID[3];
    BOOL                  bAppLock;
    USHORT                usStatus;
    USHORT                usNumPhysicalCUs;
    LPWFSCDMPHCU         *lppPhysical;

} WFSCDMCASHUNIT, *LPWFSCDMCASHUNIT;
typedef struct _wfs_cdm_cu_info
{
    USHORT                usTellerID;
    USHORT                usCount;
    LPWFSCDMCASHUNIT *lppList;
} WFSCDMCUINFO, *LPWFSCDMCUINFO;

这里我需要访问_wfs_cdm_physicalcu的数据4次,即:数组。

2 个答案:

答案 0 :(得分:5)

在C ++中停止使用C语言;这只会导致混乱。

#include <string>
#include <vector>

struct abc {
    int id;
    std::string name;
};
struct result {
    int acc_no;
    std::vector<abc> details;
};

现在,您可以根据需要轻松地向数组中添加尽可能多的abc值:

result r {42, {{1, "Mike"}, {2, "Fred"}}};  // inialise with two values
r.details.emplace_back(3, "Mary");         // add a third

答案 1 :(得分:-1)

我认为如果你想使用malloc,你应该定义一个指向struct abc的指针。然后,如果你找到一个新的内存,你可以malloc新内存并通过指针访问它。我也认为STL矢量将是更好的选择。这很方便。您可以学习一些关于STL的知识。这太有趣了。