如何检查对象数组是否为空/空
How do I check if an array of objects is empty/null?
假设我有一个像这样声明的对象数组:
Object Array[100];
int count = 0;
bool exit;
do
{
if (Array[count] == "")
{
//code that stores data
exit = true;
}
else
{
count++;
}
}
while (exit != true);
我不断收到编译器的错误,其中说:
error: no match for ‘operator==’ in ‘Array[count] == ""'
我知道我可以使用 for 循环函数来正确存储它们,甚至使用向量,但现在,我必须使用此方法来检查数组是否为空/空。知道怎么做吗?我在这里看到了很多例子,但几乎所有都是字符串/整数/浮点数等数组。
本身不能为"空"。
Object Array[100];
是一个声明,用于创建 100 Object
秒的数组。它们已经构造并存在(如果默认可构造)。
如果类型 Object
具有某种"空"状态的概念,则可以检查该状态(例如,std::vector
提供了成员.empty()
来检查空状态),或者您可以使用容器来保存数据(这也使其成为堆的一部分而不是堆栈内存并启用动态大小调整)。
std::vector<Object> vec;
int count = 0;
// do stuff...
do
{
if (count >= vec.size())
{
//code that stores data
exit = true;
}
else
{
count++;
}
}
while (exit != true);
而你也可以说std::size_t count = vec.size();
.
当您使用以下命令创建数组时: Object Array[100];
它已经为您的Object
创建了 100 个内存插槽,并为每个内存插槽调用了默认构造函数。
-
从物理上讲,数组中紧跟在引号行之后的元素。
-
从逻辑上讲,您决定的就有多少,最好将该数字保存到
count
.
如果Object
的默认c'tor在初始化方面还不够,那么你有几个选项来检查天气它的内容是否初始化:
- 您可以添加一个方法(即
bool isInitialized()
) - 您可以添加一个将
const char *
作为参数的operator==
,并将其与""
进行比较。 - 您可以添加一个将另一个
Object
作为参数的operator==
,并将其与假设Object
具有来自const char *
的 c'tor""
进行比较。
Object Array[100];
不能为空。另一方面,指向动态分配数组的指针可以初始化为 nullptr 并据此进行检查:
Object *Array = nullptr;
if(!Array) // or Array == nullptr
cout << "Array is empty (unallocated)" << endl;
Array = new Array[100];
if(Array) // or Array != nullptr
cout << "Array is NOT empty" << endl;
Array[count]
没有意义。 您正在访问索引 count
中的元素(这是索引的坏名称)并将其与 const char*
进行比较。 std::vector
是要走的路。上面的代码(以及除使用 std::vector
之外的所有内容) - 丑陋和糟糕的做法。
- 如何找到大小'x'数组是否完全填充,在C++?
- 任意大小的 constexpr 数组是否可以用作 switch 语句中的案例?
- 在 constexpr 构造函数中初始化数组是否合法?
- 以这种方式初始化的 char 数组是否会自动添加空终止符?
- 检查反向数组是否与原始数组相同
- 如何检查二维字符数组是否有空字
- 检查数组是否等于的最快方法?
- 确定数组是否可以旋转 3 个连续的数组元素进行排序?
- 如何检查数组是否包含多个元素?
- 我在代码中收到一个运行时错误,该错误如何通过修改最多一个元素来查找数组是否可以变得不减少
- c ++ 如何断言 char 数组与否,检查 char 数组是否以 "0" 开头或包含"0"
- 下课时的数组是否可以正常工作?
- C++全局常量数组:是否保证合并(优化)到一个副本中
- 在 C++17 中声明大小为 0 的数组是否合法
- 如果在执行过程中替换二进制文件,"const"数组是否驻留在内存中?
- 临时数组是否可能
- 使用二维数组作为一维数组是否正确?可能会导致未定义的行为左右?
- 当有多个查询时,检查某些子数组是否排序的有效方法是什么?
- 用于检查 char 数组是否仅包含允许的字符的函数
- 检查数组是否'right' (C++)