diff --git "a/src/\347\276\244\345\217\213\346\217\220\344\272\244/\347\254\25401\351\242\230/CodeyZ.cpp" "b/src/\347\276\244\345\217\213\346\217\220\344\272\244/\347\254\25401\351\242\230/CodeyZ.cpp" new file mode 100644 index 00000000..08d57bde --- /dev/null +++ "b/src/\347\276\244\345\217\213\346\217\220\344\272\244/\347\254\25401\351\242\230/CodeyZ.cpp" @@ -0,0 +1,21 @@ +#include +#include +#include + +template +auto operator|(V&& v, T&& 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 << ' '; } }; + auto f2 = [](int& i) {i *= i; }; + v | f2 | f; + return 0; +} \ No newline at end of file diff --git "a/src/\347\276\244\345\217\213\346\217\220\344\272\244/\347\254\25402\351\242\230/CodeyZ.cpp" "b/src/\347\276\244\345\217\213\346\217\220\344\272\244/\347\254\25402\351\242\230/CodeyZ.cpp" new file mode 100644 index 00000000..42c0ecbc --- /dev/null +++ "b/src/\347\276\244\345\217\213\346\217\220\344\272\244/\347\254\25402\351\242\230/CodeyZ.cpp" @@ -0,0 +1,32 @@ +#include +#include +#include +#include + +struct display{ +private: + const char* m_s; +public: + display(const char* s) :m_s(s) {} + + template + auto operator()(Args...args) { + return std::vformat(m_s, std::make_format_args(std::forward(args)...)); + } +}; + +auto operator""_f(const char* s,std::size_t n) { + return display{s}; +} + +int main() { + std::cout << "乐 :{} *\n"_f(5); + std::cout << "乐 :{0} {0} *\n"_f(5); + std::cout << "乐 :{:b} *\n"_f(0b01010101); + std::cout << "{:*<10}"_f("卢瑟"); + std::cout << '\n'; + int n{}; + std::cin >> n; + std::cout << "π:{:.{}f}\n"_f(std::numbers::pi_v, n); + return 0; +} diff --git "a/src/\347\276\244\345\217\213\346\217\220\344\272\244/\347\254\25403\351\242\230/CodeyZ.cpp" "b/src/\347\276\244\345\217\213\346\217\220\344\272\244/\347\254\25403\351\242\230/CodeyZ.cpp" new file mode 100644 index 00000000..28d22d34 --- /dev/null +++ "b/src/\347\276\244\345\217\213\346\217\220\344\272\244/\347\254\25403\351\242\230/CodeyZ.cpp" @@ -0,0 +1,36 @@ +#include +#include +#include +#include +struct Frac { + int a, b; +}; + +template<> +struct std::formatter { + + template + constexpr auto parse(ParseContext& ctx) { + auto it = ctx.begin(); + if (it == ctx.end()) + return it; + if (it != ctx.end() && *it != '}') + throw std::format_error("无效的 QuotableString 格式参数。"); + return it; + } + template + auto format(::Frac f, Fmtcontext& ctx)const { + return format_to(ctx.out(), "{}/{}", f.a, f.b); + } +}; + +template +auto print(std::string_view s,Args&&...args) { + std::cout << std::vformat(s,std::make_format_args(std::forward(args)...)) << '\n'; +} + +int main() { + Frac f{ 1,10 }; + print("{}", f);// 结果为1/10 + //std::cout << std::format("{}", f); +} \ No newline at end of file