大厂普遍用牛客或者赛码这种平台来出题,有的允许使用IDE调试,vscode应对这种算法题绰绰有余。
下边给出一个我自己配置的通用的环境配置,可以用来处理输入的问题,我大部分笔试都用的win10,但是有时候也有mac,目前这个配置在win10下用的,在mac上还没试,回头更新的时候把他弄成两边都兼容的,这样就可以使用OneDrive来同步了。
目录结构如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| . ├── .vscode | ├── c_cpp_properties.json | ├── launch.json | ├── settings.json | └── tasks.json ├── bytedance | ├── bin | | ├── 1.exe | | └── ... | ├── 1.cpp | ├── 1.in | └── ... └── ...
|
这是一个完整的目录,比如当前参加的是bytedance的笔试,就可以创建一个子文件夹,如果有其他的笔试,可以增加多个文件夹。
bytedance下包含多个可执行文件,例如1.cpp
,以及对应的输入1.in
,这个输入就是完整的来自牛客或者赛码的输入就行,格式要完全一样。需要手动创建一下bin/
,编译后会生成bin/1.exe
,可自动读取输入并debug。
tasks.json:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| { "version": "2.0.0", "tasks": [ { "type": "shell", "label": "build", "command": "C:\\mingw64\\bin\\g++.exe", "args": [ "-g", "${file}", "-o", "${fileDirname}\\bin\\${fileBasenameNoExtension}.exe", "-std=c++14", ], "options": { "cwd": "${workspaceFolder}" }, "problemMatcher": [ "$gcc" ], "group": { "kind": "build", "isDefault": true } }, { "label": "run", "type": "shell", "dependsOn": "build", "command": "${fileDirname}\\bin\\${fileBasenameNoExtension}.exe", "group": "test", }, { "label": "run with input", "type": "shell", "dependsOn": "build", "command": "${fileDirname}\\bin\\${fileBasenameNoExtension}.exe", "args": ["<", "${fileDirname}\\${fileBasenameNoExtension}.in"], "group": "test", } ] }
|
除了一个gcc编译之外,后边还多了两个可以用于直接运行的task,即使用ctrl+shift+p
->run task
,可以自动运行程序,可能平时不需要debug的时候有点用,但是直接调用F5
就行,这两个后边的配置项可有可无。
launch.json:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| { "version": "0.2.0", "configurations": [ { "name": "g++.exe-INPUT", "type": "cppdbg", "request": "launch", "program": "${fileDirname}\\bin\\${fileBasenameNoExtension}.exe", "args": ["<", "${fileDirname}\\${fileBasenameNoExtension}.in"], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": false, "MIMode": "gdb", "miDebuggerPath": "C:\\mingw64\\bin\\gdb.exe", "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ], "preLaunchTask": "build" }, { "name": "g++.exe-NOINPUT", "type": "cppdbg", "request": "launch", "program": "${fileDirname}\\bin\\${fileBasenameNoExtension}.exe", "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": false, "MIMode": "gdb", "miDebuggerPath": "C:\\mingw64\\bin\\gdb.exe", "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ], "preLaunchTask": "build" } ] }
|
主要关注的就是program
和args
,其他的和文档里的样例并无区别,上边的是适用于有输入的情况,下边适用于无输入。
此外c_cpp_properties.json
使用默认的就可以。
此外,在settings.json
中推荐一个format的格式,我一直在用的:
1
| "C_Cpp.clang_format_fallbackStyle": "{BasedOnStyle: LLVM, UseTab: Never, IndentWidth: 4, TabWidth: 4, AllowShortIfStatementsOnASingleLine: true, AllowShortLoopsOnASingleLine: true, ColumnLimit: 100}",
|
用上这个环境,输入后单步调试,笔试无压力了呢~祝大家offer多多~