Как проверить пустой ли массив c
Перейти к содержимому

Как проверить пустой ли массив c

Как проверить, пуст ли элемент массива классов? [c++]

Для моего последнего задания мне нужно создать хэш-таблицу, в которой хранятся акции, которые заключены в класс. Чтобы избежать столкновений, мне нужно использовать линейное зондирование. Однако проблема, с которой я столкнулся; что я не могу проверить, является ли элемент массива (который является хэш-таблицей) пустым.

Здесь некоторый код агрегирован из нескольких файлов, но это только для того, чтобы дать вам представление о том, что происходит.

Это дает ошибку: никакой оператор «! tag-list»> class hashmap hashtable arrays c++

Если у вас есть массив объектов типа X , ни один из слотов не будет «пустым». Все они содержат объект типа X Чтобы представлять пустой объект, это должно быть возможное состояние типа, которое хранится в массиве. Например, у вас может быть boost::optional<Slot> или std::unique_ptr<Slot> . В противном случае вы можете закодировать состояние непосредственно в свой Slot класс (например, с членом bool).

Что вы хотите сделать, так это хранить массив указателей запаса, в то время как в настоящее время вы храните массив объектов Slot. Чтобы сделать вещи еще проще для вас, вы можете использовать вектор для хранения указателей.

Ваша структура данных резервного копирования будет выглядеть так:

Каждый элемент в векторе является «слотом», и вам не нужен ваш слот-класс, если вы не собираетесь хранить некоторые метаданные о запасе.

Чтобы проверить, есть ли у вас запас в любом слоте вектора, вы сравниваете векторный элемент с NULL следующим образом:

Этот подход имеет положительный побочный эффект: вам не нужно выделять X-количество фондовых объектов спереди, где X — размер вашего хэш-карты (возможно, очень большое число, в зависимости от того, как часто вы сталкиваетесь).

Как проверить пустой ли массив c

Можно проверить на Nothing .

Например:
If Arr Is Nothing Then MsgBox("Массив не инициализирован") Else MsgBox("Размер массива: " & Arr.Length)

Согласен с Алексеем, но есть и другие возможности.
1) Нужно проверить размер массива:

if Arr.Length = 0 then
MsgBox("Массив пуст.")
end if

Может быть в VB.NET это не особо актуально, т.к. там сложно (если возможно) создать массив нулевой длины, но в C# эта проверка нужна.

2) Нужно проверить сами члены массива, т.к. можно создать массив произвольной длины, но данных в нем еще не будет:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *