Я не хочу быть бесполезным или звучать высокомерно.Это всего лишь личное мнение, и вы должны принять его за то, что оно того стоит.Вы не сказали, зачем пишете эту библиотеку, поэтому я предполагаю, что вам нужно решить конкретную проблему.Если вы делаете это просто для удовольствия или для обучения, пожалуйста, не обращайте внимания на напоминание об этом ответе.
Графики являются чрезвычайно общими абстракциями.Любая структура данных, более сложная, чем дерево, является графом.Большинство программ имеют такие структуры данных.Например, веб-сайт, содержащий связанные страницы, представляет собой график.Так же как и представление карты.Однако, когда вы думаете о них как о графиках, вы игнорируете все различия между веб-сайтами и картами улиц и сосредотачиваетесь на единственном, что является общим.
В подавляющем большинстве случаев детали, которые вы пытаетесь абстрагировать, тот факт, что веб-страницы - это HTML, ссылки - это URL-адреса, улицы имеют ограничения скорости, перекрестки имеют светофоры и т. Д.важный.Если вы начнете реализацию с абстракции графа, к тому времени, когда вы реализуете эти другие детали, вы окажетесь в полном беспорядке.Гораздо лучше начать с других, более важных абстракций в качестве строительных блоков и соединить их вместе, чтобы сформировать граф.Конечно, вы не получите бесплатный алгоритм кратчайшего пути, например, для своей карты улиц, но, скорее всего, вы все равно заинтересованы в самом быстром маршруте, для которого вам нужны ограничения скорости, светофоры и другая информация.
Полагаю, я пытаюсь сказать, что вижу очень ограниченное использование универсальной библиотеки графов.Приятно, что у нас есть библиотека графов Boost, но, AFAIK, ее используют немногие.