use*_*801 14 c c++ data-structures
我有以下结构
typedef struct
{
char data1[10];
char data2[10];
AnotherStruct stData;
}MyData;
Run Code Online (Sandbox Code Playgroud)
由于某种原因,实现者选择不将stData作为指针,所以我必须忍受它.我的问题是如何检查stData成员是否为空?因为如果它是空的我需要跳过我的代码中的某些东西.
任何帮助表示赞赏
hyd*_*yde 10
你需要一些方法来标记AnotherStruct stData空.
首先检查(或仔细检查)与之相关的文档和评论AnotherStruct,可能会询问那些可用的文档和评论,以确定是否有正式的方法来执行您想要的操作.
也许该结构有一个指针,如果它是空指针,则结构为空.或者可能有一个整数字段,其中0或-1或某些东西可能意味着为空.甚至是一个布尔字段将其标记为空.
如果没有上述任何一个,也许你可以添加这样一个字段,或者对某些字段进行这样的解释.
如果上述操作失败,请添加一个布尔字段MyData以告知是否stData为空.
您还可以解释一些值(例如,空字符串?Full 0xFF byte?)data1和/或data2含义为空stData.
如果你不能修改或重新解释任何一个struct的内容,那么你可以将空和非空项放在不同的容器中(数组,列表,无论你有什么).如果MyData项目是从堆逐个分配的,那么这与拥有空闲列表基本相同.
上面的变化,如果你有一个空的和非空的项都混合在一个容器中,那么你可以有另一个容器,指针或索引到非空项(或空项,或任何适合你的需要) .这有一个额外的复杂性,你需要保持两个容器同步,这可能是也可能不是微不足道的.
| 归档时间: |
|
| 查看次数: |
49109 次 |
| 最近记录: |