From 794f3a6238d42b47e015c9aae54e61385ad0526a Mon Sep 17 00:00:00 2001 From: root Date: Wed, 19 Apr 2023 14:16:47 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main.cpp b/main.cpp index d76cce7..045adce 100644 --- a/main.cpp +++ b/main.cpp @@ -1,7 +1,7 @@ #include #include #include - +//哈 // 请修复这个函数的定义:10 分 std::ostream &operator<<(std::ostream &os, std::vector const &a) { os << "{"; From 20181f103b903c4394df3bdf41f63370cf5b7005 Mon Sep 17 00:00:00 2001 From: root Date: Wed, 19 Apr 2023 22:32:57 +0800 Subject: [PATCH 2/2] fix --- .vscode/c_cpp_properties.json | 16 ++++ .vscode/launch.json | 161 ++++++++++++++++++++++++++++++++++ .vscode/settings.json | 52 +++++++++++ .vscode/tasks.json | 89 +++++++++++++++++++ main.cpp | 28 +++++- 5 files changed, 344 insertions(+), 2 deletions(-) create mode 100644 .vscode/c_cpp_properties.json create mode 100644 .vscode/launch.json create mode 100644 .vscode/settings.json create mode 100644 .vscode/tasks.json diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json new file mode 100644 index 0000000..4039bef --- /dev/null +++ b/.vscode/c_cpp_properties.json @@ -0,0 +1,16 @@ +{ + "configurations": [ + { + "name": "Linux", + "includePath": [ + "${workspaceFolder}/**" + ], + "defines": [], + "compilerPath": "/usr/bin/gcc", + "cStandard": "c17", + "cppStandard": "gnu++17", + "intelliSenseMode": "linux-gcc-x64" + } + ], + "version": 4 +} \ No newline at end of file diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..1a1b0f5 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,161 @@ +{ + "configurations": [ + { + "name": "C/C++: g++-11 生成和调试活动文件", + "type": "cppdbg", + "request": "launch", + "program": "${fileDirname}/${fileBasenameNoExtension}", + "args": [], + "stopAtEntry": false, + "cwd": "${fileDirname}", + "environment": [], + "externalConsole": false, + "MIMode": "gdb", + "setupCommands": [ + { + "description": "为 gdb 启用整齐打印", + "text": "-enable-pretty-printing", + "ignoreFailures": true + }, + { + "description": "将反汇编风格设置为 Intel", + "text": "-gdb-set disassembly-flavor intel", + "ignoreFailures": true + } + ], + "preLaunchTask": "C/C++: g++-11 生成活动文件", + "miDebuggerPath": "/usr/bin/gdb" + }, + { + "name": "C/C++: cpp 生成和调试活动文件", + "type": "cppdbg", + "request": "launch", + "program": "${fileDirname}/${fileBasenameNoExtension}", + "args": [], + "stopAtEntry": false, + "cwd": "${fileDirname}", + "environment": [], + "externalConsole": false, + "MIMode": "gdb", + "setupCommands": [ + { + "description": "为 gdb 启用整齐打印", + "text": "-enable-pretty-printing", + "ignoreFailures": true + }, + { + "description": "将反汇编风格设置为 Intel", + "text": "-gdb-set disassembly-flavor intel", + "ignoreFailures": true + } + ], + "preLaunchTask": "C/C++: cpp 生成活动文件", + "miDebuggerPath": "/usr/bin/gdb" + }, + { + "name": "C/C++: g++ 生成和调试活动文件", + "type": "cppdbg", + "request": "launch", + "program": "${fileDirname}/${fileBasenameNoExtension}", + "args": [], + "stopAtEntry": false, + "cwd": "${fileDirname}", + "environment": [], + "externalConsole": false, + "MIMode": "gdb", + "setupCommands": [ + { + "description": "为 gdb 启用整齐打印", + "text": "-enable-pretty-printing", + "ignoreFailures": true + }, + { + "description": "将反汇编风格设置为 Intel", + "text": "-gdb-set disassembly-flavor intel", + "ignoreFailures": true + } + ], + "preLaunchTask": "C/C++: g++ 生成活动文件", + "miDebuggerPath": "/usr/bin/gdb" + }, + { + "name": "C/C++: g++-11 生成和调试活动文件", + "type": "cppdbg", + "request": "launch", + "program": "${fileDirname}/${fileBasenameNoExtension}", + "args": [], + "stopAtEntry": false, + "cwd": "${fileDirname}", + "environment": [], + "externalConsole": false, + "MIMode": "gdb", + "setupCommands": [ + { + "description": "为 gdb 启用整齐打印", + "text": "-enable-pretty-printing", + "ignoreFailures": true + }, + { + "description": "将反汇编风格设置为 Intel", + "text": "-gdb-set disassembly-flavor intel", + "ignoreFailures": true + } + ], + "preLaunchTask": "C/C++: g++-11 生成活动文件", + "miDebuggerPath": "/usr/bin/gdb" + }, + { + "name": "C/C++: g++ 生成和调试活动文件", + "type": "cppdbg", + "request": "launch", + "program": "${fileDirname}/${fileBasenameNoExtension}", + "args": [], + "stopAtEntry": false, + "cwd": "${fileDirname}", + "environment": [], + "externalConsole": false, + "MIMode": "gdb", + "setupCommands": [ + { + "description": "为 gdb 启用整齐打印", + "text": "-enable-pretty-printing", + "ignoreFailures": true + }, + { + "description": "将反汇编风格设置为 Intel", + "text": "-gdb-set disassembly-flavor intel", + "ignoreFailures": true + } + ], + "preLaunchTask": "C/C++: g++ 生成活动文件", + "miDebuggerPath": "/usr/bin/gdb" + }, + { + "name": "C/C++: gcc 生成和调试活动文件", + "type": "cppdbg", + "request": "launch", + "program": "${fileDirname}/${fileBasenameNoExtension}", + "args": [], + "stopAtEntry": false, + "cwd": "${fileDirname}", + "environment": [], + "externalConsole": false, + "MIMode": "gdb", + "setupCommands": [ + { + "description": "为 gdb 启用整齐打印", + "text": "-enable-pretty-printing", + "ignoreFailures": true + }, + { + "description": "将反汇编风格设置为 Intel", + "text": "-gdb-set disassembly-flavor intel", + "ignoreFailures": true + } + ], + "preLaunchTask": "C/C++: gcc 生成活动文件", + "miDebuggerPath": "/usr/bin/gdb" + } + ], + "version": "2.0.0" +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..e99284c --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,52 @@ +{ + "code-runner.executorMap": { + "cpp": "cd $dir && g++ -std=c++17 $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt", + }, + "files.associations": { + "array": "cpp", + "atomic": "cpp", + "bit": "cpp", + "*.tcc": "cpp", + "cctype": "cpp", + "clocale": "cpp", + "cmath": "cpp", + "compare": "cpp", + "concepts": "cpp", + "cstdarg": "cpp", + "cstddef": "cpp", + "cstdint": "cpp", + "cstdio": "cpp", + "cstdlib": "cpp", + "cwchar": "cpp", + "cwctype": "cpp", + "deque": "cpp", + "string": "cpp", + "unordered_map": "cpp", + "vector": "cpp", + "exception": "cpp", + "algorithm": "cpp", + "functional": "cpp", + "iterator": "cpp", + "memory": "cpp", + "memory_resource": "cpp", + "numeric": "cpp", + "random": "cpp", + "string_view": "cpp", + "system_error": "cpp", + "tuple": "cpp", + "type_traits": "cpp", + "utility": "cpp", + "initializer_list": "cpp", + "iosfwd": "cpp", + "iostream": "cpp", + "istream": "cpp", + "limits": "cpp", + "new": "cpp", + "numbers": "cpp", + "ostream": "cpp", + "stdexcept": "cpp", + "streambuf": "cpp", + "typeinfo": "cpp", + "variant": "cpp" + } +} \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..cabe39b --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,89 @@ +{ + "tasks": [ + + { + "type": "cppbuild", + "label": "C/C++: g++ 生成活动文件", + "command": "/usr/bin/g++", + "args": [ + "-fdiagnostics-color=always", + "-g", + "${file}", + "-o", + "${fileDirname}/${fileBasenameNoExtension}", + ], + "options": { + "cwd": "${fileDirname}" + }, + "problemMatcher": [ + "$gcc" + ], + "group": { + "kind": "build", + "isDefault": true + }, + "detail": "调试器生成的任务。" + }, + { + "type": "cppbuild", + "label": "C/C++: g++-11 生成活动文件", + "command": "/usr/bin/g++-11", + "args": [ + "-fdiagnostics-color=always", + "-g", + "${file}", + "-o", + "${fileDirname}/${fileBasenameNoExtension}", + ], + "options": { + "cwd": "${fileDirname}" + }, + "problemMatcher": [ + "$gcc" + ], + "group": "build", + "detail": "调试器生成的任务。" + }, + { + "type": "cppbuild", + "label": "C/C++: cpp 生成活动文件", + "command": "/usr/bin/cpp", + "args": [ + "-fdiagnostics-color=always", + "-g", + "${file}", + "-o", + "${fileDirname}/${fileBasenameNoExtension}" + ], + "options": { + "cwd": "${fileDirname}" + }, + "problemMatcher": [ + "$gcc" + ], + "group": "build", + "detail": "调试器生成的任务。" + }, + { + "type": "cppbuild", + "label": "C/C++: gcc 生成活动文件", + "command": "/usr/bin/gcc", + "args": [ + "-fdiagnostics-color=always", + "-g", + "${file}", + "-o", + "${fileDirname}/${fileBasenameNoExtension}" + ], + "options": { + "cwd": "${fileDirname}" + }, + "problemMatcher": [ + "$gcc" + ], + "group": "build", + "detail": "调试器生成的任务。" + } + ], + "version": "2.0.0" +} \ No newline at end of file diff --git a/main.cpp b/main.cpp index 045adce..37ae7dc 100644 --- a/main.cpp +++ b/main.cpp @@ -1,8 +1,9 @@ #include #include #include -//哈 + // 请修复这个函数的定义:10 分 +template std::ostream &operator<<(std::ostream &os, std::vector const &a) { os << "{"; for (size_t i = 0; i < a.size(); i++) { @@ -16,19 +17,42 @@ std::ostream &operator<<(std::ostream &os, std::vector const &a) { // 请修复这个函数的定义:10 分 template -std::vector operator+(std::vector const &a, std::vector const &b) { +auto operator+(std::vector const &a, std::vector const &b) { // 请实现列表的逐元素加法!10 分 // 例如 {1, 2} + {3, 4} = {4, 6} + using T0 = decltype(T1{} + T2{}); + size_t imin = std::min(a.size(), b.size()); + std::vector ret; + for(size_t i = 0; i < imin; ++i){ + ret.push_back(a[i] + b[i]); + } + return ret; + } template std::variant operator+(std::variant const &a, std::variant const &b) { // 请实现自动匹配容器中具体类型的加法!10 分 + std::variant res; + std::visit([&] (const auto &t1, const auto &t2){ + res = t1 + t2; + }, a, b); + return res; } template std::ostream &operator<<(std::ostream &os, std::variant const &a) { // 请实现自动匹配容器中具体类型的打印!10 分 + // if(a.index==0){ + // os << std::get<0>(v) << std::endl; + // }else if(a.index==1){ + // os << std::get<1>(v) << std::endl; + // } + // return os; + std::visit([&] (const auto t){ + os << t << std::endl; + }, a); + return os; } int main() {