Существует ли коллекция списков на основе Microsoft C? - PullRequest
1 голос
/ 26 августа 2009

Я использую C НЕ C ++!

Я знаю коллекции C ++, но мне было интересно, есть ли у Microsoft структура списков на основе C какого-либо типа, как, например, в ядре linux, которую я могу использовать в проекте в режиме пользователя?

Я бы предпочел не кататься самостоятельно.

Ответы [ 2 ]

3 голосов
/ 26 августа 2009

Единственное, что в Windows API - это блокированные односвязные списки, которые используются через InterlockedPushEntrySList и InterlockedPopEntrySList .

Для драйверов устройств есть LIST_ENTRY , но я не уверен, что это можно перевести в пользовательский режим.

Многие книги и веб-сайты по алгоритмам содержат реализации связанных списков, которые можно легко перенести на C. Развернуть свой собственный не так уж сложно.

0 голосов
/ 26 августа 2009

повторно используемые коллекции сложны в C, у них просто нет гибкости или метаданных (как вы узнаете, когда вы переполняете этот список массивов и вам нужно перераспределить? пользовательский alloc?

Вы можете сделать это (вы МОЖЕТЕ сделать что-нибудь в c), но это очень быстро становится абстрактным.

С другой стороны, создание связанного списка в c - это просто весело. Массивы уже есть, хэши раздражают, но не невозможно, деревья - это весело, ...

Также - люди, которые думают на языке c, как правило, постоянно оптимизируют. Установка каждой операции связанного списка за вызовом функции вместо простого использования this = this.next, вероятно, вызовет отвращение многих из них (справедливо).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...