<div id="img" align=center>
[](https://www.bilibili.com/video/BV1Zj411r7eP)
[](https://qm.qq.com/cgi-bin/qm/qr?k=X-ouAYdQzPDQGUR7R-vECHDpXb7Uihdm&jump_from=webapi&authKey=5XYoNIfb913mo5Ff3P1nOhVy1pJgCM4Q6wAykQ+rpiDQSRu+tCXMN6yGOkjxIIrl)
[](https://www.zhihu.com/people/o4ze4r)
[](https://www.youtube.com/channel/UCey35Do4RGewqr-6EiaCJrg)
[](https://learn.microsoft.com/zh-cn/cpp/cpp/welcome-back-to-cpp-modern-cpp)
[](https://zh.cppreference.com/w/cpp/compiler_support)
[](https://gcc.gnu.org/onlinedocs/13.2.0/)
[](https://learn.microsoft.com/zh-cn/cpp/cpp)
[](https://releases.llvm.org/17.0.1/tools/clang/docs/)
</div>
<div id="img" align=center>
<a herf="https://zh.cppreference.com/w/cpp"><img src="image/cpp.svg" width=64px alt="cpp"/></a>
</div>
<details>
<summary>目录</summary>
- [前言](#前言)
- [`01` 实现管道运算符](#01-实现管道运算符)
+ [运行结果](#运行结果)
+ [群友提交](#群友提交-0)
+ [标准答案](#标准答案-0)
+ [解析](#解析-0)
- [`02` 实现自定义字面量 `_f`](#02-实现自定义字面量-_f)
+ [运行结果](#运行结果-1)
+ [群友提交](#群友提交-1)
+ [标准答案](#标准答案-1)
+ [解析](#解析-1)
- [`03` 实现 `print` 以及特化 `std::formatter`](#03-实现-print-以及特化-stdformatter)
+ [运行结果](#运行结果-2)
+ [群友提交](#群友提交-2)
+ [标准答案](#标准答案-2)
+ [解析](#解析-2)
- [`04` 给定类模板修改,让其对每一个不同类型实例化有不同 ID](#04-给定类模板修改让其对每一个不同类型实例化有不同-id)
+ [运行结果](#运行结果-3)
+ [群友提交](#群友提交-3)
+ [标准答案](#标准答案-3)
- [`05` 实现 `scope_guard` 类型](#05-实现-scope_guard-类型)
+ [运行结果](#运行结果-4)
+ [群友提交](#群友提交-4)
+ [标准答案](#标准答案-4)
- [`06` 解释 `std::atomic` 初始化](#06-解释-stdatomic-初始化)
+ [群友提交](#群友提交-5)
+ [标准答案](#标准答案-5)
- [`07` `throw new MyException`](#07-throw-new-myexception)
+ [运行结果](#运行结果-5)
+ [群友提交](#群友提交-6)
+ [标准答案](#标准答案-6)
- [`08` 定义`array`推导指引](#08-定义array推导指引)
+ [运行结果](#运行结果-6)
+ [群友提交](#群友提交-7)
+ [标准答案](#标准答案-7)
- [`09` 名字查找的问题](#09-名字查找的问题)
+ [运行结果](#运行结果-7)
+ [群友提交](#群友提交-8)
+ [标准答案](#标准答案-8)
- [`10` 遍历任意类数据成员](#10-遍历任意类数据成员)
+ [运行结果](#运行结果-8)
+ [群友提交](#群友提交-9)
+ [标准答案](#标准答案-9)
- [`C++17` 写法](#c17-写法)
- [`C++20` 写法](#c20-写法)
+ [补充说明](#补充说明-0)
- [`11` `emplace_back()` 的问题](#11-emplace_back-的问题)
+ [群友提交](#群友提交-10)
+ [标准答案](#标准答案-10)
- [`12` 实现`make_vector()`](#12-实现make_vector)
+ [运行结果](#运行结果-9)
+ [群友提交](#群友提交-11)
+ [标准答案](#标准答案-11)
- [运行结果](#运行结果-10)
- [`13` 关于 `return std::move`](#13-关于-return-stdmove)
+ [群友提交](#群友提交-12)
+ [标准答案](#标准答案-12)
- [`14` 以特殊方法修改命名空间中声明的对象](#14-以特殊方法修改命名空间中声明的对象)
+ [运行结果](#运行结果-11)
+ [群友提交](#群友提交-13)
+ [标准答案](#标准答案-13)
- [利用符号来解决](#利用符号来解决)
- [直接修改内存](#直接修改内存)
- [利用名字查找规则](#利用名字查找规则)
- [`15` 表达式模板](#15-表达式模板)
+ [群友提交](#群友提交-14)
+ [标准答案](#标准答案-14)
+ [解析](#解析-3)
- [`16` 通透函数宏](#16-制造传递函数模板的宏)
+ [群友提交](#群友提交-15)
+ [标准答案](#标准答案-15)
</details>
<!-- []: https://zh.cppreference.com/w/ -->
[Mq-b/Cookbook/7.6]: https://github.com/Mq-b/Cpp20-STL-Cookbook-src#76%E4%BD%BF%E7%94%A8%E6%A0%BC%E5%BC%8F%E5%BA%93%E6%A0%BC%E5%BC%8F%E5%8C%96%E6%96%87%E6%9C%AC
[cpp/language/range-for]: https://zh.cppreference.com/w/cpp/language/range-for
[cpp/utility/functional/function]: https://zh.cppreference.com/w/cpp/utility/functional/function
[cpp/utility/tuple]: https://zh.cppreference.com/w/cpp/utility/tuple
[cpp/ranges/range]: https://zh.cppreference.com/w/cpp/ranges/range
[cpp/language/user_literal]: https://zh.cppreference.com/w/cpp/language/user_literal
---
## 前言
**卢瑟们的作业展示。**
[提交 PR](提交pr教程.md) 不应当更改当前 `README`,请将作业提交到 `src\群友提交` 中,比如你要提交第一个作业:
你应当在 `src\群友提交\第01题` 中创建一个自己的 `.md` 或 `.cpp` 文件,**文件名以自己交流群 ID 命名(或 GitHub 用户名都可,方便找到本人即可)**。
答题的**一般要求**如下(题目额外要求也自行注意看):
1. 不更改 `main` 函数,不得使其不运行(意思别捞偏门)。
2. 自行添加代码,在满足第一点的要求下,要能成功编译运行并与 **给出运行结果一致**。
## `01` 实现管道运算符
日期:**`2023/7/21`** 出题人:**`mq白`**
给出代码:
```cpp
int main(){
std::vector v{1, 2, 3};
std::function f {[](const int& i) {std::cout << i << ' '; } };
auto f2 = [](int& i) {i *= i; };
v | f2 | f;
}
```
### 运行结果
```text
1 4 9
```
- 难度:**★☆☆☆☆**
<details id="群友提交-0">
<summary>群友提交</summary>
### [群友提交](src/群友提交/第01题)
答题者:[**`andyli`**](src/群友提交/第01题/andyli.cpp)
```cpp
#include <algorithm>
#include <vector>
#include <functional>
#include <iostream>
template <typename R, typename F>
auto operator|(R&& r, F&& f) {
for (auto&& x: r)
f(x);
return r;
}
int main() {
std::vector v{1, 2, 3};
std::function f{[](const int& i) { std::cout << i << ' '; }};
auto f2 = [](int& i) { i *= i; };
v | f2 | f;
}
```
> 很常规,没啥问题。
答题者:[**`mq松鼠`**](src/群友提交/第01题/mq松鼠.cpp)
```cpp
#include <iostream>
#include <vector>
#include <functional>
auto operator | (std::vector<int>&& v,std::function<void(const int&)> f){
for(auto&i:v){
f(i);
}
return v;
}
auto operator | (std::vector<int>& v,std::function<void(int&)> f){
for(auto&i:v){
f(i);
}
return v;
}
int main(){
std::vector v{1, 2, 3};
std::function f {[](const int& i) {std::cout << i << '\n'; } };
auto f2 = [](int& i) {i *= i; };
v | f2 | f;
}
```
> 评价:闲的没事多写个重载,裱起来。
</details>
<details id="标准答案-0">
<summary>标准答案</summary>
### 标准答案
```cpp
template<typename U, typename F>
requires std::regular_invocable<F, U&>//可加可不加,不会就不加
std::vector<U>& operator|(std::vector<U>& v1, F f) {
for (auto& i : v1) {
f(i);
}
return v1;
}
```
**不使用模板**:
```cpp
std::vector<int>& operator|(std::vector<int>& v1, const std::function<void(int&)>& f) {
for (auto& i : v1) {
f(i);
}
return v1;
}
```
不使用范围 `for`,使用 C++20 简写函数�

「已注销」
- 粉丝: 670
- 资源: 152
最新资源
- Cocos2d-x 2.2.1 版本资源
- 关于DeepSeek的几点思考.pdf
- 基于ISODATA算法优化的负荷场景曲线聚类方法(包含K-means、L-ISODATA及K-L-ISODATA算法,聚类效果评价与风光场景应用),基于ISODATA改进算法的负荷场景曲线聚类:多方法
- qpress的二进制命令
- 基于Matlab Simulink的风光储并网双闭环控制策略及单极调制协同运行模型研究,基于Matlab Simulink的风光储并网双闭环控制策略及其单极调制协同运行模型研究,风光储并网协同运行模型
- deepseek详细对话
- 遗传算法与动态窗口法DWA融合优化:全局路径规划与动态环境适应的算法创新,遗传算法优化与动态窗口法融合:全局最优路径规划与动态环境适应策略,遗传算法(GA)优化与动态窗口法dwa融合,效果极佳,算法新
- COMSOL仿真揭示变压器磁致伸缩现象:电路磁场分布、振动噪声及受力和噪声分布研究,COMSOL仿真揭示变压器磁致伸缩机理:电路磁场分布、振动数据与噪声分布综合分析,COMSOL仿真,变压器磁致伸缩
- 数据科学相关人员的岗位及薪资数据.zip
- 零基础入门转录组下游分析-机器学习算法之xgboost(筛选特征基因)教程配套资源
- 基于相量模型的UPFC在500kV与230kV输电系统中的功率流控仿真研究,基于相量模型的UPFC在500kV与230kV输电系统中的功率流控仿真研究,UPFC(相量模型)控制500 kV 230
- 中秋节静态网站网页设计(HTML+CSS+JS)期末大作业.zip
- C#开发TCP通信demo
- 基于Electron+HTML+CSS+Node.js开发的的中国象棋游戏,支持人机对大模型AI对战 (源码)
- 基于粒子群算法的地表水源热泵系统建模与最佳制冷制热量求解研究,水源热泵系统建模与粒子群优化:求解热泵机组最佳制冷制热量算法研究,matlab代码 从水源热泵机组角度对地表水源热泵系统建模,并采用粒子群
- COCOS2DX 2.2.2 引擎下载
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈


