<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
最新资源
- 《使用 C# 和 .NET 平台可视化数据的资源》(毕业设计,源码,教程)简单部署即可运行 功能完善、操作简单,适合毕设或课程设计.zip
- 《使用 php 和 MySqli 数据库的高级购物车教程》(毕业设计,源码,教程)简单部署即可运行 功能完善、操作简单,适合毕设或课程设计.zip
- 基于51单片机射频RFID卡考勤人数计数系统设计
- 双路foc工程源码解析:节省芯片资源,独立控制每路8k,F4主控及原理图pdf附送,双路foc工程源码解析:节省芯片资源,独立控制每路8k,主控f4,附原理图pdf及keil工程文件,双路foc工程源
- 基于雷达信号处理技术的ISAR二维成像:RD算法与MATLAB仿真代码研究与实践指南,基于RD算法的ISAR成像技术研究:解线频调距离压缩与运动补偿的MATLAB仿真代码与实践,雷达信号处理 ISAR
- (源码)基于Vue 3框架的Web应用开发项目.zip
- (源码)基于Arduino的太阳能智能士兵制服.zip
- 基于Matlab平台的暗通道先验算法图像去雾系统-含多维度调整功能的可视化操作界面与算法分析,基于Matlab平台的暗通道先验算法图像去雾系统-含界面交互、五大算子边缘检测与直方图展示的智能去雾解
- 电力行业数据资源目录构建方案汇报(39页 PPT).pptx
- 国内外银行业大数据应用案例集(87页).pptx
- 基于战略的全面绩效管理体系设计(147页).pptx
- 逻辑架构模型PPT模板(74页).pptx
- 汽车设备制造业企业信息化业务解决方案 (102页).pptx
- 数据治理平台建设与应用技术方案(41页).pptx
- 数据目录管理平台.pptx
- 数据资产管理与数据安全.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈


