Вероятно, уже слишком поздно отвечать на вопрос, но я сейчас изучаю материалы курса CS106B Стэнфордского университета и столкнулся с той же проблемой. Я нашел простое решение этой проблемы, поэтому подумал, что стоит упомянуть, если кто-то наткнется на ту же проблему.
Я использую версию начального кода linux для заданий. В этом случае вам дается Makefile вместе с начальным кодом, который генерирует статическую библиотеку библиотеки Stanford C ++, и вы можете использовать ее в своем коде. Makefile работает нормально. Вы должны открыть терминал, перейти в каталог, скажем, 0-разминка (каталог самого первого назначения), который содержит файлы Makefile, warmup.cpp, spl.jar и StanfordCPPLib. Уarmup.cpp есть две ошибки (исправление является назначением), исправьте эти две ошибки. Затем вы можете набрать «make» в терминале, чтобы собрать исполняемые файлы и запустить их. Это будет работать нормально.
Проблема возникает, когда вы включаете заголовок vector.h в свой код, где vector.h определен в каталоге StanfordCPPLib. Теперь ваш файл cpp генерирует ошибку во время компиляции, говоря, что он не может найти файл "vector.h", даже если он может найти "simpio.h", который также определен в библиотеке Stanford c ++. Это происходит не только с "vector.h", но и с другими заголовочными файлами, для которых нет соответствующего cpp-файла в каталоге StanfordCPPLib, такими как foreach.h, graph.h, grid.h и т. Д.
Решение очень простое. Не включайте просто "vector.h", включайте относительный путь к файлу vector.h. Поскольку он находится в каталоге StanfordCPPLib текущего каталога, включите в файл cpp файл "StanfordCPPLib / vector.h" (#include "StanfordCPPLib / vector.h"). Теперь введите «make», чтобы выполнить Makefile, и он должен сгенерировать исполняемый файл без ошибок.