2016-02-18 5 views
-3

Где я могу найти реализацию C++ STL-карты в C? Является ли Red Black Tree кодом, который используется в C++ STL, доступном на языке C?Где я могу найти реализацию C++ stl map в C?

+0

«Где я могу найти яблоню для апельсинов». Вы уже сказали, что это разные языки. Пожалуйста, сделайте некоторое исследование самостоятельно, как реализовать этот алгоритм самостоятельно. – Olaf

ответ

2

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

Если вы хотите красный черный код дерева, могу ли я предложить поиск реализаций, уже написанных на C, например. this MIT alum's code.

+0

Вы можете пометить его для 'std :: map ' и экспортировать в C хотя :) – Slava

+0

@Slava: кроме 'map' упорядочен и шаблон для функции сравнения; значение 'void *' является разумным, но использование 'void *' в качестве ключа вряд ли будет поддерживать любую произвольную сортировку, в которой вы заинтересованы. (Объясняя другие, я полагаю, вы шутили). Обобщение с помощью C -style string key будет охватывать множество случаев, поэтому 'std :: map ' может быть совершенно бесполезным. – ShadowRanger

+0

Функция сравнения также может быть указана с помощью указателя на функцию c. Кто знает о шутках ... – Slava

Смежные вопросы