Добро пожаловать в TheAlgorithms/C-Plus-Plus! Прежде чем отправлять запросы на включение, пожалуйста, убедитесь, что вы прочитали все руководство. Если у вас есть какие-либо сомнения относительно этого руководства по вкладу, пожалуйста, откройте проблему или задайте вопрос на нашем Discord сервере, и чётко сформулируйте свои опасения.
Пожалуйста, проверьте файл кода рецензента для сопровождающих и рецензентов.
Будучи участником The Algorithms, мы просим вас следовать пунктам, упомянутым ниже:
Новая реализация Новые реализации приветствуются!
Вы можете добавить новые алгоритмы или структуры данных, которые отсутствуют в репозитории, или которые могут улучшить старые реализации (документацию, улучшение тестовых случаев, устранение ошибок или в любом другом разумном смысле).
Проблемы Пожалуйста, избегайте открытия проблем с просьбой «назначить» их конкретному алгоритму. Это просто создаёт ненужный шум для сопровождающих. Вместо этого, пожалуйста, отправьте свою реализацию в запросе на включение, и она будет оценена сопровождающими проекта.
*.hpp
, *.h
или *.cpp
.bits/stdc++.h
потому что это специфично для Linux и замедляет процесс компиляции.struct
, class
и/или namespace
ключевых слов.README.md
вместе с другими изменениями. Сначала создайте проблему и затем свяжите её со своим запросом на включение, чтобы предложить конкретные изменения, необходимые для README.md
.Обязательно добавьте примеры и тестовые случаи в свою функцию main()
.
Если вы обнаружите алгоритм или документ без тестов, пожалуйста, не стесняйтесь создать запрос на включение или проблему, описывающую предлагаемые изменения.
Пожалуйста, попробуйте добавить один или // можно провести несколько проверок
// это позволяет пользователю узнать, что тесты пройдены успешно std::cout << "Все тесты успешно пройдены!\n"; }
/**
MyNewCppClass.CPP неверно
my_new_cpp_class.cpp верно
median_search.cpp
уже существует в папке search
, и вы предоставляете новую реализацию, имя файла должно быть median_search2.cpp
. Для третьей реализации — median_search3.cpp
, и так далее.SomeNew Fancy-Category неверно
some_new_fancy_category верно
Если новый каталог необходим на 100%, файл CMakeLists.txt
в корневом каталоге должен быть обновлён, а новый файл CMakeLists.txt
должен быть создан в новом каталоге.
Пример того, как должен выглядеть ваш новый файл CMakeLists.txt
. Обратите внимание, что если требуются какие-либо дополнительные библиотеки/настройки, вы должны включить их в этот файл.
# При необходимости используйте флаг RELATIVE, иначе каждый исходный файл может быть указан
# с полным путём. Флаг RELATIVE упрощает автоматическое извлечение имени исполняемого файла.
file( GLOB APP_SOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.cpp )
foreach( testsourcefile ${APP_SOURCES} )
string( REPLACE ".cpp" "" testname ${testsourcefile} ) # Тип файла. Пример: `.cpp`
add_executable( ${testname} ${testsourcefile} )
set_target_properties(${testname} PROPERTIES LINKER_LANGUAGE CXX)
if(OpenMP_CXX_FOUND)
target_link_libraries(${testname} OpenMP::OpenMP_CXX)
endif()
install(TARGETS ${testname} DESTINATION "bin/<foldername>") # Имя папки. Не включайте `<>`
endforeach( testsourcefile ${APP_SOURCES} )
Файл CMakeLists.txt
в корневом каталоге следует обновить, чтобы включить новый каталог.
Включите свой новый каталог после последнего подкаталога. Пример:
...
add_subdirectory(divide_and_conquer)
add_subdirectory(<foldername>)
git add file_xyz.cpp
git commit -m "your message"
Примеры сообщений фиксации с семантическими префиксами:
fix: ошибка в алгоритме xyz
feat: добавить алгоритм xyx, класс xyz
test: добавить тест для алгоритма xyz
docs: добавить комментарии и пояснения к алгоритму xyz/улучшить рекомендации по внесению вклада
chore: обновить значок Gitpod
Общие префиксы:
Перед отправкой запроса на вытягивание: Сборка кода локально или с помощью удобного сервиса
Соберите код локально или используя удобный сервис .
cmake -B build -S .
Статический анализатор кода
Мы используем clang-tidy
в качестве статического анализатора кода с конфигурацией в .clang-tidy
.
clang-tidy --fix --quiet -p build subfolder/file_to_check.cpp --
Форматирование кода
Для форматирования кода используется clang-format
.
Установка (требуется только один раз):
— Mac (с использованием homebrew): brew install clang-format
— Mac (с использованием macports): sudo port install clang-10 +analyzer
— Windows (MSYS2 64-bit): pacman -S mingw-w64-x86_64-clang-tools-extra
— Linux (Debian): sudo apt-get install clang-format-10 clang-tidy-10
Выполнение (все платформы):
clang-format -i -style="file" my_file.cpp
GitHub Actions
Включите GitHub Actions на своём форке репозитория. После включения он будет выполнять clang-tidy
и clang-format
после каждого нажатия (не коммита).
Нажмите на вкладку «Actions», затем нажмите на большую зелёную кнопку, чтобы включить его.
Результат может создать ещё один коммит, если действия внесли какие-либо изменения от вашего имени. Поэтому лучше подождать и проверить результаты GitHub Actions после каждого нажатия. Если эти действия внесли много изменений, выполните git pull
в вашем локальном клоне, чтобы избежать конфликтов слияния.
Самое главное:
Happy coding!
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )