c++ - 用特殊值初始化 C++ 中的对象数组

标签 c++ arrays null initialization

我是一名中级 Java 程序员,如果使用对内存中实例化对象的引用初始化对象,我习惯于依赖 Java 中的空值进行检查。我想在 C++ 中做类似的事情,但我不清楚如何实现它。我想初始化一个用户数组 - user 是我定义的一个类 - 所以我可以检查数组中的实际位置是否确实包含一个对象或者它是空闲的。

我曾尝试在 C++ 中使用 null 定义,但发现它只是一个“-1”int 值,我无法正确使用它。所以基本上我需要一些东西来区分我的阵列中的空闲位置和占用的位置。

此外,我可能对有一个额外的值来区分包含已删除用户的位置感兴趣,因为我打算在涉及删除用户的方法时用特殊标记将所需位置标记为空闲位置数组中的用户。

对于那些好奇的人,我正在实现一个简单的哈希集,我的类中的 remove 方法只是标记要删除的元素的位置,而不是进行一些重构。

最佳答案

首先 null 定义不是 -1 而是 0。假设你有类似的东西

class User
{
};

User RemovedClass;

你可以有这样的东西

User *arr[3];
arr[0] = new User();
arr[1] = 0;
arr[2] = &RemovedClass;

这里0是一个新的User,1是java null equivalent,2是删除类的标记。

编辑

通常,当您在 java 中看到 User 数组时,您必须将其映射到 C++ 中的 User* 数组。

在这些操作之后。

User a;
User b;
a = b;

在 java 中,a 和 b 指的是同一个用户。在 C++ 中,此类代码将产生引用两个不同用户对象的 a 和 b。

关于c++ - 用特殊值初始化 C++ 中的对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8206847/

相关文章:

c++ - 如何忽略输入文件中的空格?

c++ - 我认为 do while 正在进入无限循环。或数组。 (运行时错误)

java - 如何重新排列数组以使空值占据数组的开头?

c# - 递增数组中的值

c++ - 简单的乘法或运算符问题

java - 如果更新的客户端请求中不存在保存的对象,是否可以删除数据库条目?

java - ArrayList 自动添加空项

php - NULL 默认值不一致,并且更新将 NULL 更改为空字符串 Laravel4

jsf - @ManagedProperty 在 CDI 托管 bean 中不起作用

c++ - vector 到 vector 字符串比较搜索的问题