У меня вопрос о том, как реализовать стиль Python «Установить» в C. Я пишу алгоритм заполнения заливки, и он должен использовать список, подобный стеку, чтобы отслеживать, какие пиксели ждут цвета. Я хочу, чтобы функция возвращала порядок, в котором пиксели окрашены (я использую алгоритм для трассировки круглых линий из начальной точки, и я не хочу, чтобы он пропускал пиксели по мере того, как он идет, по которому нужно поднять вверх по конец - это поведение происходит либо с помощью обычного стека, либо с помощью функции рекурсивного заполнения).Как реализовать набор Python в C
Случайно (прототипирующий код) Я обнаружил, что использование Python 'Set' в виде стека дает правильный стиль заполнения, который я ищу. Эти две характеристики этого множества, которые, кажется, ответственны за это, являются:
- поведение FIFO
- Когда пиксель добавил, что уже в наборе множество не меняется (это не на самом деле, кажется, быть требованием, но приятно иметь - я думаю, это зависит от того, увеличение числа вызовов перевешивают над головой поиска множества дубликатов)
я могу добавить пиксели как линейные индексы, так что я могу держать если это помогает. Любые идеи, которые не требуют много циклов?
Наборы Python не являются FIFO. – user2357112
Набор python похож на математический набор. Любой элемент может встречаться только один раз в наборе. [Википедия о наборах как абстрактный тип данных] (https://en.wikipedia.org/wiki/Set_(abstract_data_type)) – UpSampler
@ UpSampler-- это не совсем правильно. '{1, 2, 2, 3}' - математический набор, и он [эквивалентен множеству '{1, 2, 3}'] (https://en.wikipedia.org/wiki/Set_ (математика) #Describing_sets). –