From 1150402dea182367bce272339906e124160625f3 Mon Sep 17 00:00:00 2001 From: Yanguuuuu <18837671220@163.com> Date: Thu, 29 Jan 2026 23:00:34 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E4=BD=9C=E4=B8=9A=E6=8F=90?= =?UTF-8?q?=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- exercises/00_hello_world/main | Bin 0 -> 39752 bytes exercises/00_hello_world/main.cpp | 2 +- exercises/01_variable&add/main | Bin 0 -> 39896 bytes exercises/01_variable&add/main.cpp | 1 + exercises/02_function/main | Bin 0 -> 40024 bytes exercises/02_function/main.cpp | 2 + exercises/03_argument¶meter/main | Bin 0 -> 40024 bytes exercises/03_argument¶meter/main.cpp | 8 +-- exercises/04_static/main | Bin 0 -> 40184 bytes exercises/04_static/main.cpp | 10 +-- exercises/05_constexpr/main | Bin 0 -> 40104 bytes exercises/05_constexpr/main.cpp | 4 +- exercises/06_array/main | Bin 0 -> 56536 bytes exercises/06_array/main.cpp | 4 +- exercises/07_loop/main | Bin 0 -> 56744 bytes exercises/07_loop/main.cpp | 4 +- exercises/08_pointer/main | Bin 0 -> 40168 bytes exercises/08_pointer/main.cpp | 11 +++ exercises/09_enum&union/main | Bin 0 -> 40008 bytes exercises/09_enum&union/main.cpp | 9 ++- exercises/10_trivial/main | Bin 0 -> 40216 bytes exercises/10_trivial/main.cpp | 25 ++++++- exercises/11_method/main | Bin 0 -> 40264 bytes exercises/11_method/main.cpp | 22 +++++- exercises/12_method_const/main | Bin 0 -> 40136 bytes exercises/12_method_const/main.cpp | 3 +- exercises/13_class/main | Bin 0 -> 40344 bytes exercises/13_class/main.cpp | 21 +++++- exercises/14_class_destruct/main | Bin 0 -> 40520 bytes exercises/14_class_destruct/main.cpp | 27 +++++-- exercises/15_class_clone/main | Bin 0 -> 40760 bytes exercises/15_class_clone/main.cpp | 43 +++++++++-- exercises/16_class_move/main | Bin 0 -> 40744 bytes exercises/16_class_move/main.cpp | 64 +++++++++++++++-- exercises/17_class_derive/main | Bin 0 -> 40584 bytes exercises/17_class_derive/main.cpp | 6 +- exercises/18_class_virtual/main | Bin 0 -> 41176 bytes exercises/18_class_virtual/main.cpp | 44 ++++++------ exercises/19_class_virtual_destruct/main | Bin 0 -> 40968 bytes exercises/19_class_virtual_destruct/main.cpp | 31 ++++---- exercises/20_function_template/main | Bin 0 -> 40344 bytes exercises/20_function_template/main.cpp | 9 +-- exercises/21_runtime_datatype/main | Bin 0 -> 40536 bytes exercises/21_runtime_datatype/main.cpp | 17 ++++- exercises/22_class_template/main | Bin 0 -> 41080 bytes exercises/22_class_template/main.cpp | 60 +++++++++++++++- exercises/23_template_const/main | Bin 0 -> 41240 bytes exercises/23_template_const/main.cpp | 30 ++++++-- exercises/24_std_array/main | Bin 0 -> 40264 bytes exercises/24_std_array/main.cpp | 16 ++--- exercises/25_std_vector/main | Bin 0 -> 138008 bytes exercises/25_std_vector/main.cpp | 72 +++++++++---------- exercises/26_std_vector_bool/main | Bin 0 -> 69976 bytes exercises/26_std_vector_bool/main.cpp | 18 ++--- exercises/27_strides/main | Bin 0 -> 70440 bytes exercises/27_strides/main.cpp | 17 ++++- exercises/28_std_string/main | Bin 0 -> 52712 bytes exercises/28_std_string/main.cpp | 12 ++-- exercises/29_std_map/main | Bin 0 -> 97016 bytes exercises/29_std_map/main.cpp | 8 +++ exercises/30_std_unique_ptr/main | Bin 0 -> 94920 bytes exercises/30_std_unique_ptr/main.cpp | 22 +++--- exercises/31_std_shared_ptr/main | Bin 0 -> 52248 bytes exercises/31_std_shared_ptr/main.cpp | 36 +++++----- exercises/32_std_transform/main | Bin 0 -> 83352 bytes exercises/32_std_transform/main.cpp | 8 +++ exercises/33_std_accumulate/main | Bin 0 -> 40200 bytes exercises/33_std_accumulate/main.cpp | 3 +- 68 files changed, 485 insertions(+), 184 deletions(-) create mode 100755 exercises/00_hello_world/main create mode 100755 exercises/01_variable&add/main create mode 100755 exercises/02_function/main create mode 100755 exercises/03_argument¶meter/main create mode 100755 exercises/04_static/main create mode 100755 exercises/05_constexpr/main create mode 100755 exercises/06_array/main create mode 100755 exercises/07_loop/main create mode 100755 exercises/08_pointer/main create mode 100755 exercises/09_enum&union/main create mode 100755 exercises/10_trivial/main create mode 100755 exercises/11_method/main create mode 100755 exercises/12_method_const/main create mode 100755 exercises/13_class/main create mode 100755 exercises/14_class_destruct/main create mode 100755 exercises/15_class_clone/main create mode 100755 exercises/16_class_move/main create mode 100755 exercises/17_class_derive/main create mode 100755 exercises/18_class_virtual/main create mode 100755 exercises/19_class_virtual_destruct/main create mode 100755 exercises/20_function_template/main create mode 100755 exercises/21_runtime_datatype/main create mode 100755 exercises/22_class_template/main create mode 100755 exercises/23_template_const/main create mode 100755 exercises/24_std_array/main create mode 100755 exercises/25_std_vector/main create mode 100755 exercises/26_std_vector_bool/main create mode 100755 exercises/27_strides/main create mode 100755 exercises/28_std_string/main create mode 100755 exercises/29_std_map/main create mode 100755 exercises/30_std_unique_ptr/main create mode 100755 exercises/31_std_shared_ptr/main create mode 100755 exercises/32_std_transform/main create mode 100755 exercises/33_std_accumulate/main diff --git a/exercises/00_hello_world/main b/exercises/00_hello_world/main new file mode 100755 index 0000000000000000000000000000000000000000..94ab3fe3705f3449613545e9256ef4f5a7524ad2 GIT binary patch literal 39752 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 TxBBa2Yu@`&P4X)im+XH4P-GL9 literal 0 HcmV?d00001 diff --git a/exercises/00_hello_world/main.cpp b/exercises/00_hello_world/main.cpp index 8866f3c15..fa454e132 100644 --- a/exercises/00_hello_world/main.cpp +++ b/exercises/00_hello_world/main.cpp @@ -6,6 +6,6 @@ int main(int argc, char **argv) { // TODO: 在控制台输出 "Hello, InfiniTensor!" 并换行 - std::cout : "Hello, InfiniTensor!" + std::endl; + std::cout << "Hello, InfiniTensor!" << std::endl; return 0; } diff --git a/exercises/01_variable&add/main b/exercises/01_variable&add/main new file mode 100755 index 0000000000000000000000000000000000000000..df520d81517093404933549e22cdb823eec99e9e GIT binary patch literal 39896 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 NLCDzo-J^oc{{~8xMNa?# literal 0 HcmV?d00001 diff --git a/exercises/01_variable&add/main.cpp b/exercises/01_variable&add/main.cpp index 5014863fd..71fabf2b4 100644 --- a/exercises/01_variable&add/main.cpp +++ b/exercises/01_variable&add/main.cpp @@ -5,6 +5,7 @@ int main(int argc, char **argv) { // TODO: 补全变量定义并打印加法运算 // x ? + int x = 1; std::cout << x << " + " << x << " = " << x + x << std::endl; return 0; } diff --git a/exercises/02_function/main b/exercises/02_function/main new file mode 100755 index 0000000000000000000000000000000000000000..affa443a3467bad0fba5a6683660d91ad1f4d429 GIT binary patch literal 40024 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 o%&-5a#jY#q9~Pwz_`kRK^W&>ts@T2a%GtL // TODO: 在这里声明函数 +int add(int a, int b); int main(int argc, char **argv) { ASSERT(add(123, 456) == 123 + 456, "add(123, 456) should be 123 + 456"); @@ -16,4 +17,5 @@ int main(int argc, char **argv) { int add(int a, int b) { // TODO: 补全函数定义,但不要移动代码行 + return a + b; } diff --git a/exercises/03_argument¶meter/main b/exercises/03_argument¶meter/main new file mode 100755 index 0000000000000000000000000000000000000000..110883be6486d6d66f1b79f975be98eacfbbcd03 GIT binary patch literal 40024 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 JwyHyb`9FAu@j(Cp literal 0 HcmV?d00001 diff --git a/exercises/03_argument¶meter/main.cpp b/exercises/03_argument¶meter/main.cpp index 7fb5d3c2f..76136eae6 100644 --- a/exercises/03_argument¶meter/main.cpp +++ b/exercises/03_argument¶meter/main.cpp @@ -8,19 +8,19 @@ void func(int); // TODO: 为下列 ASSERT 填写正确的值 int main(int argc, char **argv) { auto arg = 99; - ASSERT(arg == ?, "arg should be ?"); + ASSERT(arg == 99, "arg should be ?"); std::cout << "befor func call: " << arg << std::endl; func(arg); - ASSERT(arg == ?, "arg should be ?"); + ASSERT(arg == 99, "arg should be ?"); std::cout << "after func call: " << arg << std::endl; return 0; } // TODO: 为下列 ASSERT 填写正确的值 void func(int param) { - ASSERT(param == ?, "param should be ?"); + ASSERT(param == 99, "param should be ?"); std::cout << "befor add: " << param << std::endl; param += 1; - ASSERT(param == ?, "param should be ?"); + ASSERT(param == 100, "param should be ?"); std::cout << "after add: " << param << std::endl; } diff --git a/exercises/04_static/main b/exercises/04_static/main new file mode 100755 index 0000000000000000000000000000000000000000..05b417dc70e47ef3c116cdc718ddb759d00392cc GIT binary patch literal 40184 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 TR$exo^_!>PS}+|w!k_;Ez#HE1 literal 0 HcmV?d00001 diff --git a/exercises/04_static/main.cpp b/exercises/04_static/main.cpp index f107762fa..64f417694 100644 --- a/exercises/04_static/main.cpp +++ b/exercises/04_static/main.cpp @@ -10,10 +10,10 @@ static int func(int param) { int main(int argc, char **argv) { // TODO: 将下列 `?` 替换为正确的数字 - ASSERT(func(5) == ?, "static variable value incorrect"); - ASSERT(func(4) == ?, "static variable value incorrect"); - ASSERT(func(3) == ?, "static variable value incorrect"); - ASSERT(func(2) == ?, "static variable value incorrect"); - ASSERT(func(1) == ?, "static variable value incorrect"); + ASSERT(func(5) == 5, "static variable value incorrect"); + ASSERT(func(4) == 6, "static variable value incorrect"); + ASSERT(func(3) == 7, "static variable value incorrect"); + ASSERT(func(2) == 8, "static variable value incorrect"); + ASSERT(func(1) == 9, "static variable value incorrect"); return 0; } diff --git a/exercises/05_constexpr/main b/exercises/05_constexpr/main new file mode 100755 index 0000000000000000000000000000000000000000..f4e774cb49a290a48f9d51b229e85c53906bb646 GIT binary patch literal 40104 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 O@&EYr4SWvf?!N$6OX1@H literal 0 HcmV?d00001 diff --git a/exercises/05_constexpr/main.cpp b/exercises/05_constexpr/main.cpp index d1db6c9d8..b0186236e 100644 --- a/exercises/05_constexpr/main.cpp +++ b/exercises/05_constexpr/main.cpp @@ -18,8 +18,8 @@ int main(int argc, char **argv) { // TODO: 观察错误信息,修改一处,使代码编译运行 // PS: 编译运行,但是不一定能算出结果…… - constexpr auto ANS_N = 90; - constexpr auto ANS = fibonacci(ANS_N); + constexpr auto ANS_N = 90; // 编译时必须计算出结果,const只要求值不可变,运行时也可 + const auto ANS = fibonacci(ANS_N); std::cout << "fibonacci(" << ANS_N << ") = " << ANS << std::endl; return 0; diff --git a/exercises/06_array/main b/exercises/06_array/main new file mode 100755 index 0000000000000000000000000000000000000000..da24e3c59df3262c148500a901b34806fff347ca GIT binary patch literal 56536 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 literal 0 HcmV?d00001 diff --git a/exercises/06_array/main.cpp b/exercises/06_array/main.cpp index 61ed99ec0..f741db8a8 100644 --- a/exercises/06_array/main.cpp +++ b/exercises/06_array/main.cpp @@ -11,13 +11,13 @@ unsigned long long fibonacci(int i) { return 1; default: // TODO: 补全三目表达式缺失的部分 - return ? : (arr[i] = fibonacci(i - 1) + fibonacci(i - 2)); + return arr[i] ? arr[i]: (arr[i] = fibonacci(i - 1) + fibonacci(i - 2)); // 实现记忆化 } } int main(int argc, char **argv) { // TODO: 为此 ASSERT 填写正确的值 - ASSERT(sizeof(arr) == ?, "sizeof array is size of all its elements"); + ASSERT(sizeof(arr) == 90 * sizeof(unsigned long long) , "sizeof array is size of all its elements"); // ---- 不要修改以下代码 ---- ASSERT(fibonacci(2) == 1, "fibonacci(2) should be 1"); ASSERT(fibonacci(20) == 6765, "fibonacci(20) should be 6765"); diff --git a/exercises/07_loop/main b/exercises/07_loop/main new file mode 100755 index 0000000000000000000000000000000000000000..f0fb1cdd5c4ba29406e9f37a73d6021e1e33686b GIT binary patch literal 56744 zcmeHP4|G)3nZIu)fe8e{pCA+hiOOn}C^Pvx6F??}fdo=Wla#~y?>U)yNv2LFVP*nE za66n}YuDYbW2x)b-8CrH;Ga`!@klIc6uWhMdd>#Rv7)pl(e4JRXTh@DjBU*RzW45% zyqQcupmxvcx$khf_xIiJe)qe-``!EQd(7iMKK=N!OvWUJ%Y-x+$)3*GeJl?p#=eA9 zg(S(d?PbzS-4WoUU*GE)4YbzQmb2Q*ay!V?D=9ZaNQt_cg#_N( z4ATmn+TIc9s+Uu1&k>t~0>!R=CHkdHkw=pJ0#+}lmKpsbi7b2FVYgPNVe)Gn>-H?v zkgiCgU#iUT*Z6v>sou2FwYFMc3w=p`0n^p9Sj&kgO8Qldo`^Tr$Jkl)UBvO(V~klL zra4=HwDk?fHX$GQcg7yXnwXAqEfQTNJdti0(tM=JE<4)an4)qfWO+yw|I0fB`6W$PTS%<3;__c&Sc}Q=erjS&jPwe>}^U-E6xVPWc*DKkY_+wjSF{qJDj6D6F*J zyoNV{He=Tzkw1ChliJ_FG4V?mO%v6(zlZt@Ef`W3mta6JAQ%t~2nGZLf&syRU_dY+ z7!V8y1_T3w0l|P^KrkQ}5DW+g1OtKr!GK^uFd!HZ3wcC---Rsh^IR4i1|FR2jQyuB-))Z`=dwYblO5gXpK%%4p?2@+ zb#K_C_<5x&`vuR*4*C2s`o9bL_kb;y3-kOuboRsNHw`{N2U*Idx&5?}N^3@cB`L z&k@MtK2K+{ZvzibcgFrsm!EJ%cW~J^c}{k8pWC^N>`=SEiPx1!eO%VbbFxD|e}{aY z9;tHzcXurrQP-W7ue%4!qqjl6zw6GCaNJK*v<0#r$TG72;jQYj!=F_D__a?m#yF5ny9#rp?#{Ta(r6`Q@i9+jv9ACRPIbocvv^H@qC8s8WgB=-cJwjhce<)R z*`an7dR^6uXaSeuC+2D$*`YCSLH`W-=q}em>`l==v;6j0B|AQl#d={kJ0E+GWlu%S zvPU{MT=v+)`%T)Ogx}EiSCKrOox|@{`)`m~G{3WDWFusEXRve2I`1B_NYfwK0G!`> z;|SS;-l2T0O*DUx6gxdOHve>1q!)c0vYR4!>e;o0(ALHqMf*t=Q+7Lffz8C%vtk<|7UhnL+WU^AKBi(^(r6}!xJ!bHb ztMOs>Z@yM`Qdb;OW&Jp}DI{_1ydv#vT zcZ@uYaSKsiV}CUNRIlp5{#Ss1gE1kN65@?w zq5^dTh&$4ycrnHX?f>d}qqv5yMRGd8!JPOy=rY6(;$}bM=5h0qktezqj~u}GzyG@& zJIxc;&pDdo9>W~tOfhl~`t0etL!a+6#Bn$LeTDeH9(`gy4w`SLSU5BM)A1M~8P%zB z=;62X*<;9Q3_Um>@c211d@XETOM2)Z?JazN=!Q?UR}P`>Ao@~um_^+a-{d~Nit&)| zj+i zzJ-q`mybc^8yu%)`AvS;Fu+>i9|mJr(&+)3+{Qne~rG3_C|NT zdT`Xtq7Os<5R%b8o8gSb$CiSpA#gxk(fMHr_ALy_rr$RV_n1^|S2KsoGx$;4ukLd! zq`1Vm6S(e591D%333_)S8OK5U3hv3U#bT$ipXS4N{a%lFO@CM3#~<+oAgv;!=666%Y1P3n061R``!@7pvNEfY&G_#@qBbw<-swt z;S2)%#8;|0qV-Mpe~MGJZ}4_8Udi8aKMnW&N-f@r`*>feWJz48GzYh4rPAK&}zv)t}FTtjxL9Yc&> zOb_3(;p{gtzLM?XT#y)psW?gD|L1C#%GNRBBE^{x^G0Vr{p>;K3@v7~J)UBO_9E<& z2{9mzjs0V)`|)J{sr%i$q!_?C7;CO~ILq04dOGd-8F$m3PxGP23eL}Sv~x4Xdm8o| zNjv9-a_tl&Jsx(P)+)Z0Q{#O;<^29c@v%SjzMbX{v8>)>x}kq3F#O^BS-C>@YqAJZ!R@HL;^6 z9CYbY_3|@o4SJdMabtdtm#uZ;d&%31Y^@cckP;00+5&k^Zl7QA=DEXpeqTVzyOx#b zExOIx%9?zQZ2`B(QEEqfVN*hHfWr6j+=)0cw%x zJ8-%P8!w9udaD>aj}Kg{kgvr9|5oHyETneiXOTycQ-7H_SVeeG2hy07kDJl?bY{XH zW6HKL$!cMyc5I>trZMR#^1SIxT00%>kw1dmp2^H!d;p8Hg|u=87Ao?i$dArsQa?V- zJ&!ym3pVKHhtF$IWU;hUz;|KcvOKk8EhyQnh!(c9BAQ@Ug#5!7tr6_QY7W=bdJP{b2Y~~Ma|)+n!`OchkI%cx73`z7bd%KNzKU>!n1ikhv&He;hGh}8dLLmJikiK zL7TV)1A+m;fM7r{AQ%t~2nGZLf&syRU_dY+7!V8y1_T3w0l|P^KrkQ}5DW+g1OtKr z!GK^uFd!HZ3HKH%NWcjOs9ln59u2VuCtqSn1n>N;m zi)7hW>TmP7{feU_q{vNfj}ms(ZK}7*g+8y#sAl)Ih2%zeNGWYr!f4{!uGVTcY=x-t zdE`(y=nFJgdp6a}Hk+r#9hAdCw=W#3_PAV-Ioy8gEZi0(fvZ%OeF0zC)#|xoQ)_LB z{uF8cw80_8-J04VS5bRM*p<-t=W15cFmP>Ts|){8xDAkd&u;t6-QE127O@Fav-lIQV=Dnb~BlrW;p z+vp3+ZiK0)EfDf~m7p9{!Y#qJ9SLm584c(M1Yb*9FZxcgpQbFw_=s`+ea~dApU#%1&RHQ6&47fVOz>w(X>YxbYvIEUj8IJRT|S7`lzgX3k0( zye$bIO~R6<9B*$=!rPMYp(OmGIgu)mTuAGX)+1FRRU>Uc zszLfP(xup11N};*wMdiM-H1Bfb{_5)6SsF+-QLAfYU0^W9Hrz7A2r2Miq2>?jwW9t z&RQOi&v+X3ht}8wip_4dS*_Kn9vxitNFv*kPst6k%T-@0*KWM@GrX}&SM54FkJlH= z#TXO`hcjDNb`&F)!XS0g+cuE?}FGk>Xc?uPg|vJ+_TiNRbPl1 zRIPK4;@#r$&)sZ@SpI0j)g0P`Cmxn38F6uw&u@sU#MY^)NIizqCb!S8cnt$F&c#Lj zu;Ym<6vo4n!2mr-$sWHu(2PeUzh90&P^BhfhtHc3RmT2pCGj@`cmT)DPC`dX2w@U1 z_<+##8)x;h-Yg`{@1NlHLb2B!b{m{Dj&wXQlKJ=(jHA%dY2rA_FjH-urzH4i4Roex-yZ zOG+n5>=PtKWfMfjg>+L$couY(c-)>AWum-Pm3!Hzzs~H#D|Z`S(cpEIdSyd~_e`e6 z%!HTPCiTty9jMvL>+vS^z4km4!yDGmbIqn#fpkggOP&`#itg!o=AI3Ek3aU^Ki>PR z8Q*iWGu^+wCH=*d<>%JUd+Z0#ef`M;>88H4Umibxw`ud%^s(KCci(g0yDvXb z^{s-ZX20CLp#HfJoY(9<+2buLd45ITKMe(jzWeyCJF5Tn!2FKQAK#kx?PEoc{%z>| z7GGDV-1X6kx|e@+!@MQ0O#A3NbN+Cm=KgmB-6!o|`k;HEbMVyE-9LIV*uCw@^`Qsf z*s$a$yK;Z_{>A#g()$0tttPUglY~J)zmie2%_|*qry?&|C{Z{mHRUgNOU=Cm*`G_)yzkZ7$jW0R$SzegFUf literal 0 HcmV?d00001 diff --git a/exercises/07_loop/main.cpp b/exercises/07_loop/main.cpp index 44fd835cd..461414efa 100644 --- a/exercises/07_loop/main.cpp +++ b/exercises/07_loop/main.cpp @@ -5,9 +5,9 @@ // READ: 纯函数 static unsigned long long fibonacci(int i) { // TODO: 为缓存设置正确的初始值 - static unsigned long long cache[96], cached; + static unsigned long long cache[96]={0,1}, cached = 2; // TODO: 设置正确的循环条件 - for (; false; ++cached) { + for (; cached < 96; ++cached) { cache[cached] = cache[cached - 1] + cache[cached - 2]; } return cache[i]; diff --git a/exercises/08_pointer/main b/exercises/08_pointer/main new file mode 100755 index 0000000000000000000000000000000000000000..bc9dbdd15d8bcde7795793270c9817d9d41d73ff GIT binary patch literal 40168 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 3, "`len` should be at least 3"); // TODO: 编写代码判断从 ptr 开始,每 stride 个元素取 1 个元素,组成长度为 n 的数列是否满足 // arr[i + 2] = arr[i] + arr[i + 1] + + for (int i = 0; i < len - 2; i++) { // len表示元素个数,不是边界 + int a = ptr[i * stride]; + int b = ptr[(i + 1) * stride]; + int c = ptr[(i + 2) * stride]; + + if (c != a + b) { + return false; + } + } + return true; } diff --git a/exercises/09_enum&union/main b/exercises/09_enum&union/main new file mode 100755 index 0000000000000000000000000000000000000000..2f125d6ad560a6c0697fa17ecffae660e7a8ea28 GIT binary patch literal 40008 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 Bfc*df literal 0 HcmV?d00001 diff --git a/exercises/09_enum&union/main.cpp b/exercises/09_enum&union/main.cpp index 3f2cec768..e233db8a4 100644 --- a/exercises/09_enum&union/main.cpp +++ b/exercises/09_enum&union/main.cpp @@ -6,7 +6,7 @@ // 在 `enum` 中定义标识符等价于定义 constexpr 常量, // 这些标识符不需要前缀,可以直接引用。 // 因此 `enum` 定义会污染命名空间。 -enum ColorEnum : unsigned char { +enum ColorEnum : unsigned char { COLOR_RED = 31, COLOR_GREEN, COLOR_YELLOW, @@ -16,7 +16,7 @@ enum ColorEnum : unsigned char { // 有作用域枚举型是 C++ 引入的类型安全枚举。 // 其内部标识符需要带前缀引用,如 `Color::Red`。 // 作用域枚举型可以避免命名空间污染,并提供类型安全保证。 -enum class Color : int { +enum class Color : int { // 如同int /float一样知识取值,31,可以选red,green,yellow,blue Red = COLOR_RED, Green, Yellow, @@ -26,7 +26,7 @@ enum class Color : int { ColorEnum convert_by_pun(Color c) { // READ: // `union` 表示在同一内存位置存储的不同类型的值。 - // 其常见用法是实现类型双关转换,即将一种类型的值转换为另一种无关类型的值。 + // 其常见用法是实现类型双关转换,即将一种类型的值转换为另一种无关类型的值。 // 但这种写法实际上仅在 C 语言良定义,在 C++ 中是未定义行为。 // 这是比较少见的 C++ 不与 C 保持兼容的特性。 // READ: 类型双关 @@ -37,6 +37,7 @@ ColorEnum convert_by_pun(Color c) { TypePun pun; // TODO: 补全类型双关转换 + pun.c = c; return pun.e; } @@ -48,3 +49,5 @@ int main(int argc, char **argv) { ASSERT(convert_by_pun(Color::Blue) == COLOR_BLUE, "Type punning conversion"); return 0; } + + diff --git a/exercises/10_trivial/main b/exercises/10_trivial/main new file mode 100755 index 0000000000000000000000000000000000000000..97da4521dda689eaa973bd4786df946dc4327dfe GIT binary patch literal 40216 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 - FibonacciCache fib; + FibonacciCache fib ={}; // 结构体需要初始化 ASSERT(fibonacci(fib, 10) == 55, "fibonacci(10) should be 55"); std::cout << "fibonacci(10) = " << fibonacci(fib, 10) << std::endl; return 0; diff --git a/exercises/11_method/main b/exercises/11_method/main new file mode 100755 index 0000000000000000000000000000000000000000..6ad0f41dc099ba6f8902fef12aae229a4d18d33f GIT binary patch literal 40264 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 literal 0 HcmV?d00001 diff --git a/exercises/11_method/main.cpp b/exercises/11_method/main.cpp index 0e08e0a36..1ec16445b 100644 --- a/exercises/11_method/main.cpp +++ b/exercises/11_method/main.cpp @@ -6,8 +6,24 @@ struct Fibonacci { // TODO: 实现正确的缓存优化斐波那契计算 unsigned long long get(int i) { - for (; false; ++cached) { - cache[cached] = cache[cached - 1] + cache[cached - 2]; + if(i < cached) + { + return cache[i]; + } + for (int n = cached; n <= i;++n) + { + if(n==0) + { + cache[n] = 0; + } + else if (n==1) + { + cache[n] = 1; + } + else{ + cache[n] = cache[n - 1] + cache[n - 2]; + } + cached = n; } return cache[i]; } @@ -15,7 +31,7 @@ struct Fibonacci { int main(int argc, char **argv) { // TODO: 初始化缓存结构体,使计算正确 - Fibonacci fib; + Fibonacci fib={}; ASSERT(fib.get(10) == 55, "fibonacci(10) should be 55"); std::cout << "fibonacci(10) = " << fib.get(10) << std::endl; return 0; diff --git a/exercises/12_method_const/main b/exercises/12_method_const/main new file mode 100755 index 0000000000000000000000000000000000000000..8095cba6dfff685c86eaddca64cdace2a67e5df7 GIT binary patch literal 40136 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 literal 0 HcmV?d00001 diff --git a/exercises/12_method_const/main.cpp b/exercises/12_method_const/main.cpp index 5521be4da..d1f412d8d 100644 --- a/exercises/12_method_const/main.cpp +++ b/exercises/12_method_const/main.cpp @@ -5,7 +5,8 @@ struct Fibonacci { int numbers[11]; // TODO: 修改方法签名和实现,使测试通过 - int get(int i) { + int get(int i) const{ // const 成员函数:不修改对象,可在 const 对象上调用 + return numbers[i]; } }; diff --git a/exercises/13_class/main b/exercises/13_class/main new file mode 100755 index 0000000000000000000000000000000000000000..bd24c4c767e41e97642385367172e972900784d7 GIT binary patch literal 40344 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 literal 0 HcmV?d00001 diff --git a/exercises/13_class/main.cpp b/exercises/13_class/main.cpp index 9afa98c5b..22c9ebe94 100644 --- a/exercises/13_class/main.cpp +++ b/exercises/13_class/main.cpp @@ -15,11 +15,28 @@ class Fibonacci { public: // TODO: 实现构造器 // Fibonacci() + Fibonacci():cache{},cached{0} {} // TODO: 实现正确的缓存优化斐波那契计算 size_t get(int i) { - for (; false; ++cached) { - cache[cached] = cache[cached - 1] + cache[cached - 2]; + if(i < cached) + { + return cache[i]; + } + for (int n = cached; n <= i;++n) + { + if(n==0) + { + cache[n] = 0; + } + else if (n==1) + { + cache[n] = 1; + } + else{ + cache[n] = cache[n - 1] + cache[n - 2]; + } + cached = n; } return cache[i]; } diff --git a/exercises/14_class_destruct/main b/exercises/14_class_destruct/main new file mode 100755 index 0000000000000000000000000000000000000000..3a5a897d3a60586e72569f12ce80bf0aa076a841 GIT binary patch literal 40520 zcmeHQ4|G)3nZIu)zyzX+kP1Q|qp%tzLMDG80mQ+{$lpRt(wZvzoJ?Mlsgp^ZdBITd z?0BNbKkQo4r7e44m!PPLYnAO!-@s~1pG!27Xjz|2=mUoQ(e0A zP^7UHf_8ns5&CjOdx^H|ko8l)?&EqY*VeApeOtHGSiS4D>|%)dV~d?&QlM(6tAJap z)UBY?>w6ut{P9}l1;wT!abJK@-08%txU7JqH-;lRJts)uRwl2q**; z0tx|zfI>hapb$_9Cy)5Kssx1QY@a0fm4_mQFcV~XzA!q(@cPBg5?aUi~K#NyD z%-G&;=eFUsNMD(ObZ6c$e%_bc)46Tf^$Ygfq1gxL4$WXIhzG-7XGPu-q>o%ZP|@`! zmF=9z<-0rY7}lo7tMOY+=o36AcqDuG%C3`KcCL`U-Qwpsx=w>XP{K%O?m&sq4gS9p zf0^Jf6Z~B(yIvyx62V_GF8}w$zfSP48|NP-{zAcDDEP0g>^e;Re8JBjmp?-Md4fN0 zoc}EGXAAyp!OvRN^)2Gh68u@?@_$YIY{AbS=kEib+UjQU>W`g?wEJ{-=ltOzr}k`* zZ$A2ooq7Rs_-U+#d8sJhv8ro3>78NeB{}N19_SgEX7L86c}E6jct>6#p3~wDI7NBj z+9B$<{DGbNHt6mXdf({I&AsrKuH#Pqt?te{hxefT*a-&zarBOMvM%_}@F5@hkUmUx z9rEdYU1SUD8{K(xFJyVyG1x@*4Q8|cbFkwaY#7S+_Ak!#_Peyqdxm~^a4vq+&HZTz zcDXdjWXJnmJ3_-lz-txS%=wUq-}Mt#Lo>Yn=b(d^fBWFvN2ZAK;6vBFL(@`qWOfFj>WbsSg+;gz2fa~z~Z$uf_&%Qo^tjZ&l2|AK-=*j-Kq7C`dAnB(;$_D9NECMo8B7Txwbc1C;Cd39pZAR4>4i5 z_<_5InU=YmeC()$?S&1`a$lOyX3gb3=N*|R;`8aH`pFmZ8)En*`HN(Ot=;5fiFWt+ z4)#sg;%{W$|Jr`n{nPg^*4S^)p|26oM2Ir&;5%2Ler^})a4|NL?_&Kacu4xmFA2+Y zPS>-&@Mjm=Nch5s_&nExpN#Wz)9z?(@9n$`ZOPm{gn26i`ngUqhYev4gCCBh$YGqx_3^Tp!(<-y`+t-D z%Y+Tfy#4QEe)|vj>{(zqh&glMI`7C7_`*h#1CG=-@||v{cB%*K3x0OK*PCIr*{=H# z=06SjR0hAx&+T@K`R_ztAAaDTLKBt`CvbJ%IeZXlyT08be}6&_c#iJe0AF|T@s;S4 zcI1y>Ov?2=F3NBj=)V>8FVQBN%jEGve!LcW^1Leh@);`Q!~92M7P9cK3Scl3JTW&) zz5~BG1iyL0xnTH7%>9Sa{--|9E2nV{+)Nu^$N!VEhy`Z3J0Ay9{foZ}PSDEPRWwBAm`bzl$Mw5^JKge@TP! z*_&7e#~JwW@;4o?m`i?%cBf$7nc5a=Mr`wD^21pCtI61dP;*C2&!P

9TsmDR2#fKvLvlZhexp5@ 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 literal 0 HcmV?d00001 diff --git a/exercises/14_class_destruct/main.cpp b/exercises/14_class_destruct/main.cpp index 42150e8ca..70da506f2 100644 --- a/exercises/14_class_destruct/main.cpp +++ b/exercises/14_class_destruct/main.cpp @@ -11,15 +11,34 @@ class DynFibonacci { public: // TODO: 实现动态设置容量的构造器 - DynFibonacci(int capacity): cache(new ?), cached(?) {} + DynFibonacci(int capacity): cache(new size_t[capacity]), cached(0) {} // TODO: 实现析构器,释放缓存空间 - ~DynFibonacci(); + ~DynFibonacci() + { + delete[] cache; // 释放单个对象的内存还是对象数组的内存 + } // TODO: 实现正确的缓存优化斐波那契计算 size_t get(int i) { - for (; false; ++cached) { - cache[cached] = cache[cached - 1] + cache[cached - 2]; + if(i < cached) + { + return cache[i]; + } + for (int n = cached; n <= i;++n) + { + if(n==0) + { + cache[n] = 0; + } + else if (n==1) + { + cache[n] = 1; + } + else{ + cache[n] = cache[n - 1] + cache[n - 2]; + } + cached = n; } return cache[i]; } diff --git a/exercises/15_class_clone/main b/exercises/15_class_clone/main new file mode 100755 index 0000000000000000000000000000000000000000..628ca8515f04cdf77005188fac263cb1949bb183 GIT binary patch literal 40760 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 literal 0 HcmV?d00001 diff --git a/exercises/15_class_clone/main.cpp b/exercises/15_class_clone/main.cpp index f74b70391..14b0e35e2 100644 --- a/exercises/15_class_clone/main.cpp +++ b/exercises/15_class_clone/main.cpp @@ -7,22 +7,54 @@ class DynFibonacci { size_t *cache; int cached; + int capacity; public: // TODO: 实现动态设置容量的构造器 - DynFibonacci(int capacity): cache(new ?), cached(?) {} + DynFibonacci(int capacity): cache(new size_t[capacity]()), cached(0) { + this->capacity = capacity; + } // TODO: 实现复制构造器 - DynFibonacci(DynFibonacci const &) = delete; + DynFibonacci(DynFibonacci const &other) //在一个类的成员函数中,可以访问其他同类对象的私有成员。 + { + cache = new size_t[other.capacity](); + cached = other.cached; + capacity = other.capacity; + for (int i = 0; i <= other.cached; ++i) + { + cache[i] = other.cache[i]; + } + } // TODO: 实现析构器,释放缓存空间 - ~DynFibonacci(); + ~DynFibonacci() + { + delete[] cache; + }; // TODO: 实现正确的缓存优化斐波那契计算 size_t get(int i) { - for (; false; ++cached) { - cache[cached] = cache[cached - 1] + cache[cached - 2]; + if(i < cached) + { + return cache[i]; + } + for (int n = cached; n <= i;++n) + { + if(n==0) + { + cache[n] = 0; + } + else if (n==1) + { + cache[n] = 1; + } + else{ + cache[n] = cache[n - 1] + cache[n - 2]; + } + } + cached = i; return cache[i]; } @@ -42,6 +74,7 @@ int main(int argc, char **argv) { DynFibonacci fib(12); ASSERT(fib.get(10) == 55, "fibonacci(10) should be 55"); DynFibonacci const fib_ = fib; + std::cout << fib_.get(10); ASSERT(fib_.get(10) == fib.get(10), "Object cloned"); return 0; } diff --git a/exercises/16_class_move/main b/exercises/16_class_move/main new file mode 100755 index 0000000000000000000000000000000000000000..76052b516d2a4dd5de845945c3b8dc8bf49ca601 GIT binary patch literal 40744 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 WAN=OE@Kcd<`RWfJF8-DP^M3&`FOneu literal 0 HcmV?d00001 diff --git a/exercises/16_class_move/main.cpp b/exercises/16_class_move/main.cpp index 8d2c421da..39c2aca09 100644 --- a/exercises/16_class_move/main.cpp +++ b/exercises/16_class_move/main.cpp @@ -12,26 +12,78 @@ class DynFibonacci { size_t *cache; int cached; + int capacity; public: // TODO: 实现动态设置容量的构造器 - DynFibonacci(int capacity): cache(new ?), cached(?) {} + DynFibonacci(int capacity): cache(new size_t[capacity]), cached(0) { + this->capacity = capacity; + } // TODO: 实现移动构造器 - DynFibonacci(DynFibonacci &&) noexcept = delete; + DynFibonacci(DynFibonacci && other) noexcept + { // 移动构造直接传递指针 + cache = other.cache; + cached = other.cached; + capacity = other.capacity; + + other.cache = nullptr; + other.cached = 0; + other.capacity = 0; + + }; // TODO: 实现移动赋值 // NOTICE: ⚠ 注意移动到自身问题 ⚠ - DynFibonacci &operator=(DynFibonacci &&) noexcept = delete; + DynFibonacci &operator=(DynFibonacci && other) noexcept + { + // 1. 检查自赋值:this != &other, 赋值说明对象均已经初始化完毕; + if (this != &other) { // other为一个左值,因此其可以取地址; + // 2. 释放当前对象的资源 + delete[] cache; + + // 3. 从other对象"偷取"资源 + cache = other.cache; + cached = other.cached; + capacity = other.capacity; + + // 4. 将other对象置为空状态 + other.cache = nullptr; + other.cached = 0; + other.capacity = 0; + } + // 5. 返回当前对象的引用 + return *this; // 这是缺少的返回语句! + } // TODO: 实现析构器,释放缓存空间 - ~DynFibonacci(); + ~DynFibonacci() + { + delete[] cache; + } // TODO: 实现正确的缓存优化斐波那契计算 size_t operator[](int i) { - for (; false; ++cached) { - cache[cached] = cache[cached - 1] + cache[cached - 2]; + if(i < cached) + { + return cache[i]; + } + for (int n = cached; n <= i;++n) + { + if(n==0) + { + cache[n] = 0; + } + else if (n==1) + { + cache[n] = 1; + } + else{ + cache[n] = cache[n - 1] + cache[n - 2]; + } + } + cached = i; return cache[i]; } diff --git a/exercises/17_class_derive/main b/exercises/17_class_derive/main new file mode 100755 index 0000000000000000000000000000000000000000..84f4ca1e1e578da068c86a83b6aadfea878934a6 GIT binary patch literal 40584 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 literal 0 HcmV?d00001 diff --git a/exercises/17_class_derive/main.cpp b/exercises/17_class_derive/main.cpp index 819ae72fc..0c245df4f 100644 --- a/exercises/17_class_derive/main.cpp +++ b/exercises/17_class_derive/main.cpp @@ -50,9 +50,9 @@ int main(int argc, char **argv) { B b = B(3); // TODO: 补全三个类型的大小 - static_assert(sizeof(X) == ?, "There is an int in X"); - static_assert(sizeof(A) == ?, "There is an int in A"); - static_assert(sizeof(B) == ?, "B is an A with an X"); + static_assert(sizeof(X) == 4, "There is an int in X"); + static_assert(sizeof(A) == 4, "There is an int in A"); + static_assert(sizeof(B) == 8, "B is an A with an X"); i = 0; std::cout << std::endl diff --git a/exercises/18_class_virtual/main b/exercises/18_class_virtual/main new file mode 100755 index 0000000000000000000000000000000000000000..29307efa047727cc60721e4c3acf7895efbaafde GIT binary patch literal 41176 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 z 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 V-JegDd}ndZH?7Xseb+OY{|kgE^@0EZ literal 0 HcmV?d00001 diff --git a/exercises/18_class_virtual/main.cpp b/exercises/18_class_virtual/main.cpp index ac6382413..1a5461310 100644 --- a/exercises/18_class_virtual/main.cpp +++ b/exercises/18_class_virtual/main.cpp @@ -21,7 +21,7 @@ struct B : public A { }; struct C : public B { // READ: final - char virtual_name() const final { + char virtual_name() const final { return 'C'; } char direct_name() const { @@ -42,38 +42,38 @@ int main(int argc, char **argv) { C c; D d; - ASSERT(a.virtual_name() == '?', MSG); - ASSERT(b.virtual_name() == '?', MSG); - ASSERT(c.virtual_name() == '?', MSG); - ASSERT(d.virtual_name() == '?', MSG); - ASSERT(a.direct_name() == '?', MSG); - ASSERT(b.direct_name() == '?', MSG); - ASSERT(c.direct_name() == '?', MSG); - ASSERT(d.direct_name() == '?', MSG); + ASSERT(a.virtual_name() == 'A', MSG); + ASSERT(b.virtual_name() == 'B', MSG); + ASSERT(c.virtual_name() == 'C', MSG); + ASSERT(d.virtual_name() == 'C', MSG); + ASSERT(a.direct_name() == 'A', MSG); + ASSERT(b.direct_name() == 'B', MSG); + ASSERT(c.direct_name() == 'C', MSG); + ASSERT(d.direct_name() == 'D', MSG); - A &rab = b; + A &rab = b; // 取决于指针的状态,非 B &rbc = c; C &rcd = d; - ASSERT(rab.virtual_name() == '?', MSG); - ASSERT(rbc.virtual_name() == '?', MSG); - ASSERT(rcd.virtual_name() == '?', MSG); - ASSERT(rab.direct_name() == '?', MSG); - ASSERT(rbc.direct_name() == '?', MSG); - ASSERT(rcd.direct_name() == '?', MSG); + ASSERT(rab.virtual_name() == 'B', MSG); + ASSERT(rbc.virtual_name() == 'C', MSG); + ASSERT(rcd.virtual_name() == 'C', MSG); + ASSERT(rab.direct_name() == 'A', MSG); + ASSERT(rbc.direct_name() == 'B', MSG); + ASSERT(rcd.direct_name() == 'C', MSG); A &rac = c; B &rbd = d; - ASSERT(rac.virtual_name() == '?', MSG); - ASSERT(rbd.virtual_name() == '?', MSG); - ASSERT(rac.direct_name() == '?', MSG); - ASSERT(rbd.direct_name() == '?', MSG); + ASSERT(rac.virtual_name() == 'C', MSG); + ASSERT(rbd.virtual_name() == 'C', MSG); + ASSERT(rac.direct_name() == 'A', MSG); + ASSERT(rbd.direct_name() == 'B', MSG); A &rad = d; - ASSERT(rad.virtual_name() == '?', MSG); - ASSERT(rad.direct_name() == '?', MSG); + ASSERT(rad.virtual_name() == 'C', MSG); + ASSERT(rad.direct_name() == 'A', MSG); return 0; } diff --git a/exercises/19_class_virtual_destruct/main b/exercises/19_class_virtual_destruct/main new file mode 100755 index 0000000000000000000000000000000000000000..8c716888f7fd32ec76b4f242dc8a4b6f2855737f GIT binary patch literal 40968 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 literal 0 HcmV?d00001 diff --git a/exercises/19_class_virtual_destruct/main.cpp b/exercises/19_class_virtual_destruct/main.cpp index cdd54f74f..d8b10803c 100644 --- a/exercises/19_class_virtual_destruct/main.cpp +++ b/exercises/19_class_virtual_destruct/main.cpp @@ -5,12 +5,12 @@ struct A { // TODO: 正确初始化静态字段 - static int num_a = 0; + static int num_a; A() { ++num_a; } - ~A() { + virtual ~A() { --num_a; } @@ -18,9 +18,11 @@ struct A { return 'A'; } }; +int A::num_a = 0; + struct B final : public A { // TODO: 正确初始化静态字段 - static int num_b = 0; + static int num_b; B() { ++num_b; @@ -33,14 +35,16 @@ struct B final : public A { return 'B'; } }; +int B::num_b = 0; int main(int argc, char **argv) { auto a = new A; - auto b = new B; - ASSERT(A::num_a == ?, "Fill in the correct value for A::num_a"); - ASSERT(B::num_b == ?, "Fill in the correct value for B::num_b"); - ASSERT(a->name() == '?', "Fill in the correct value for a->name()"); - ASSERT(b->name() == '?', "Fill in the correct value for b->name()"); + auto b = new B; // 创建b时会调用a + + ASSERT(A::num_a == 2, "Fill in the correct value for A::num_a"); + ASSERT(B::num_b == 1, "Fill in the correct value for B::num_b"); + ASSERT(a->name() == 'A', "Fill in the correct value for a->name()"); + ASSERT(b->name() == 'B', "Fill in the correct value for b->name()"); delete a; delete b; @@ -48,13 +52,14 @@ int main(int argc, char **argv) { ASSERT(B::num_b == 0, "Every B was destroyed"); A *ab = new B;// 派生类指针可以随意转换为基类指针 - ASSERT(A::num_a == ?, "Fill in the correct value for A::num_a"); - ASSERT(B::num_b == ?, "Fill in the correct value for B::num_b"); - ASSERT(ab->name() == '?', "Fill in the correct value for ab->name()"); + ASSERT(A::num_a == 1, "Fill in the correct value for A::num_a"); + ASSERT(B::num_b == 1, "Fill in the correct value for B::num_b"); + ASSERT(ab->name() == 'B', "Fill in the correct value for ab->name()"); // TODO: 基类指针无法随意转换为派生类指针,补全正确的转换语句 - B &bb = *ab; - ASSERT(bb.name() == '?', "Fill in the correct value for bb->name()"); + B &bb = dynamic_cast(*ab); + + ASSERT(bb.name() == 'B', "Fill in the correct value for bb->name()"); // TODO: ---- 以下代码不要修改,通过改正类定义解决编译问题 ---- delete ab;// 通过指针可以删除指向的对象,即使是多态对象 diff --git a/exercises/20_function_template/main b/exercises/20_function_template/main new file mode 100755 index 0000000000000000000000000000000000000000..f668a19c9abf745885eea0f73849d260475ef1b6 GIT binary patch literal 40344 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 // TODO: 将这个函数模板化 -int plus(int a, int b) { +template +T plus(T a, T b) { return a + b; } @@ -12,9 +13,9 @@ int main(int argc, char **argv) { // THINK: 浮点数何时可以判断 ==?何时必须判断差值? ASSERT(plus(1.25f, 2.5f) == 3.75f, "Plus two float"); - ASSERT(plus(1.25, 2.5) == 3.75, "Plus two double"); - // TODO: 修改判断条件使测试通过 - ASSERT(plus(0.1, 0.2) == 0.3, "How to make this pass?"); + ASSERT(plus(1.25, 2.5) == 3.75, "Plus two double"); // + // TODO: 修改判断条件使测试通过 cpp浮点数需要为2^n, 0.5,0.05 + ASSERT(std::abs(plus(0.1, 0.2) - 0.3) < 1e-10, "How to make this pass?"); return 0; } diff --git a/exercises/21_runtime_datatype/main b/exercises/21_runtime_datatype/main new file mode 100755 index 0000000000000000000000000000000000000000..751d9d9dcda4e514cec36fc44c955b19f2ec4f54 GIT binary patch literal 40536 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 -enum class DataType { +enum class DataType { // int默认 Float, Double, }; @@ -11,20 +11,30 @@ enum class DataType { struct TaggedUnion { DataType type; // NOTICE: struct/union 可以相互任意嵌套。 - union { + union { // float f; double d; }; }; // TODO: 将这个函数模板化用于 sigmoid_dyn -float sigmoid(float x) { +template +T sigmoid(T x) { return 1 / (1 + std::exp(-x)); } TaggedUnion sigmoid_dyn(TaggedUnion x) { TaggedUnion ans{x.type}; // TODO: 根据 type 调用 sigmoid + if(x.type == DataType::Float) + { + ans.f = sigmoid(x.f); + } + else if (x.type == DataType::Double) + { + ans.d = sigmoid(x.d); + } + return ans; } @@ -41,5 +51,6 @@ int main(int argc, char **argv) { auto yd = sigmoid_dyn(xd); ASSERT(yd.type == DataType::Double, "type mismatch"); ASSERT(yd.d == 1 / (1 + std::exp(-5.0)), "sigmoid double"); + std::cout << sizeof(DataType) << std::endl; return 0; } diff --git a/exercises/22_class_template/main b/exercises/22_class_template/main new file mode 100755 index 0000000000000000000000000000000000000000..a1eb8c29ccaa869684e19978e5cefada39c6f05a GIT binary patch literal 41080 zcmeHQ4SZC^wV%5i!Uh6Fh?2+W#_%9~6tejaAF?5=fFPtvswf|~o6RO!NOt4yMnOc^ zU(niOD_g0hKUxV$HL)MkmiJ65*0k7)KCQvFmR749w7OC2!)i5A^78&??(FW}n++)H zd;R@-?~mD;bLPyMGiT16J7+dKJp19_{wI|&iQzFIjYm3@#Mo_tOhU1LLt2R>%jKmj zY}eW<))6-T;f>=_Lm=XljSghF%C^2LzM8kU#^acPM*vMJSyaoi-?_~%0AyNzcV40l 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 literal 0 HcmV?d00001 diff --git a/exercises/22_class_template/main.cpp b/exercises/22_class_template/main.cpp index d4985d904..d7e3e7d45 100644 --- a/exercises/22_class_template/main.cpp +++ b/exercises/22_class_template/main.cpp @@ -4,12 +4,17 @@ template struct Tensor4D { - unsigned int shape[4]; + unsigned int shape[4]; // 存储四个维度信息 T *data; - Tensor4D(unsigned int const shape_[4], T const *data_) { + Tensor4D(unsigned int *shape_, T const *data_) { unsigned int size = 1; // TODO: 填入正确的 shape 并计算 size + for (int i = 0; i < 4; ++i) + { + shape[i] = shape_[i]; + size *= shape_[i]; // 总的元素数量 + } data = new T[size]; std::memcpy(data, data_, size * sizeof(T)); } @@ -28,6 +33,52 @@ struct Tensor4D { // 则 `this` 与 `others` 相加时,3 个形状为 `[1, 2, 1, 4]` 的子张量各自与 `others` 对应项相加。 Tensor4D &operator+=(Tensor4D const &others) { // TODO: 实现单向广播的加法 + // 形状不同的长度必须为1 + // 1.检查维度 + int i,idx = 1,thissize = 1,othersize = 1; // 第i个维度存在元素 + int flag_dim = -1,beforesize = 1; + for (i = 0; i < 4; ++i) { + if(flag_dim == -1 && shape[i] != others.shape[i]) + { + flag_dim = i; // 设置不同维度时的维度坐标 + } + if(flag_dim == -1) + { + beforesize *= shape[i]; // 记录this的元素个数 + } + thissize *= this->shape[i]; + othersize *= others.shape[i]; // 计算起始位置以及终止位置 + } + // 一、不进行广播 + if (flag_dim == -1) { + for (int i = 0; i < thissize; ++i) { + data[i] += others.data[i]; + } + return *this; + } + std::cout << "thissize:" << thissize << std::endl; + std::cout << "othersize:" << othersize << std::endl; + std::cout << "idx:" << idx << std::endl; + + // 将4维shape 2维化 + int step = 1,other_step = 1 ; + std::cout << "flag_dim" << flag_dim << std::endl; + for (int i = 3; i >= flag_dim; --i) { + step *= shape[i]; + other_step *= others.shape[i]; + } + //std::cout << "step:" << other_step << std::endl; + + // 二、k 为batch,必须保证batch的维度相同 + for (int k = 0; k < beforesize; ++k) { + for (int i = 0; i < step; ++i)// this:[2,3,4]. -> [2,1,12] other:[2,1,4] + { + + this->data[i + k * step] += others.data[(i + k * step) % other_step + k * other_step];// 1 -> 12 : 1 -> 4. + //std::cout << "this_idx: " << i + k * step << std::endl; + //std::cout << "other_idx: " << ((i + k * step) % other_step + k * other_step) % othersize << std::endl; + } + } return *this; } }; @@ -35,7 +86,7 @@ struct Tensor4D { // ---- 不要修改以下代码 ---- int main(int argc, char **argv) { { - unsigned int shape[]{1, 2, 3, 4}; + unsigned int shape[]{1, 2, 3, 4}; // clang-format off int data[]{ 1, 2, 3, 4, @@ -45,8 +96,10 @@ int main(int argc, char **argv) { 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}; + // clang-format on auto t0 = Tensor4D(shape, data); + auto t1 = Tensor4D(shape, data); t0 += t1; for (auto i = 0u; i < sizeof(data) / sizeof(*data); ++i) { @@ -105,5 +158,6 @@ int main(int argc, char **argv) { for (auto i = 0u; i < sizeof(d0) / sizeof(*d0); ++i) { ASSERT(t0.data[i] == d0[i] + 1, "Every element of t0 should be incremented by 1 after adding t1 to it."); } + } } diff --git a/exercises/23_template_const/main b/exercises/23_template_const/main new file mode 100755 index 0000000000000000000000000000000000000000..d95f92f41e31be2678d2ef4c29d04a1976c1e53f GIT binary patch literal 41240 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 JjstA-{{!!aZ!iD= literal 0 HcmV?d00001 diff --git a/exercises/23_template_const/main.cpp b/exercises/23_template_const/main.cpp index e0105e168..d8380ebe3 100644 --- a/exercises/23_template_const/main.cpp +++ b/exercises/23_template_const/main.cpp @@ -8,12 +8,18 @@ struct Tensor { unsigned int shape[N]; T *data; - Tensor(unsigned int const shape_[N]) { + Tensor(unsigned int const shape_[N]){ unsigned int size = 1; // TODO: 填入正确的 shape 并计算 size - data = new T[size]; + for (int i = 0; i < N;++i) + { + shape[i] = shape_[i]; + size *= shape_[i]; + } + data = new T[size]; std::memset(data, 0, size * sizeof(T)); } + ~Tensor() { delete[] data; } @@ -35,7 +41,23 @@ struct Tensor { for (unsigned int i = 0; i < N; ++i) { ASSERT(indices[i] < shape[i], "Invalid index"); // TODO: 计算 index + if(i == N-1) + { + index += indices[i]; + } + else{ + int j = i + 1,temp = 1; + while (j < N) // 子tensor计算 + { + temp *= shape[j]; + j++; + } + index += indices[i] * temp; + } + } + std::cout << index << std::endl; + return index; } }; @@ -43,10 +65,10 @@ struct Tensor { // ---- 不要修改以下代码 ---- int main(int argc, char **argv) { { - unsigned int shape[]{2, 3, 4, 5}; + unsigned int shape[]{2, 3, 4, 5}; // 四维张量的shape [batch,channel,H,W] auto tensor = Tensor<4, int>(shape); - unsigned int i0[]{0, 0, 0, 0}; + unsigned int i0[]{0, 0, 0, 0}; // 四维张量的索引 tensor[i0] = 1; ASSERT(tensor[i0] == 1, "tensor[i0] should be 1"); ASSERT(tensor.data[0] == 1, "tensor[i0] should be 1"); diff --git a/exercises/24_std_array/main b/exercises/24_std_array/main new file mode 100755 index 0000000000000000000000000000000000000000..d8e6e4e2d811be299ebaeeef726157253f8f3c1e GIT binary patch literal 40264 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 literal 0 HcmV?d00001 diff --git a/exercises/24_std_array/main.cpp b/exercises/24_std_array/main.cpp index c29718d9d..1c99d7f5e 100644 --- a/exercises/24_std_array/main.cpp +++ b/exercises/24_std_array/main.cpp @@ -8,21 +8,21 @@ int main(int argc, char **argv) { { std::array arr{{1, 2, 3, 4, 5}}; - ASSERT(arr.size() == ?, "Fill in the correct value."); - ASSERT(sizeof(arr) == ?, "Fill in the correct value."); + ASSERT(arr.size() == 5, "Fill in the correct value."); + ASSERT(sizeof(arr) == 20, "Fill in the correct value."); int ans[]{1, 2, 3, 4, 5}; - ASSERT(std::memcmp(arr.?, ans, ?) == 0, "Fill in the correct values."); + ASSERT(std::memcmp(arr.data(), ans, 20) == 0, "Fill in the correct values."); } { std::array arr; - ASSERT(arr.size() == ?, "Fill in the correct value."); - ASSERT(sizeof(arr) == ?, "Fill in the correct value."); + ASSERT(arr.size() == 8, "Fill in the correct value."); + ASSERT(sizeof(arr) == 64, "Fill in the correct value."); } { std::array arr{"Hello, InfiniTensor!"}; - ASSERT(arr.size() == ?, "Fill in the correct value."); - ASSERT(sizeof(arr) == ?, "Fill in the correct value."); - ASSERT(std::strcmp(arr.?, "Hello, InfiniTensor!") == 0, "Fill in the correct value."); + ASSERT(arr.size() == 21, "Fill in the correct value."); + ASSERT(sizeof(arr) == 21, "Fill in the correct value."); + ASSERT(std::strcmp(arr.data(), "Hello, InfiniTensor!") == 0, "Fill in the correct value."); } return 0; } diff --git a/exercises/25_std_vector/main b/exercises/25_std_vector/main new file mode 100755 index 0000000000000000000000000000000000000000..ced3e8697829085be61ac255345cb3476db16f7b GIT binary patch literal 138008 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

Q{9xBd;k$$#m+aIUsWY?f!m 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 Ho0 vec{1, 2, 3, 4, 5}; - ASSERT(vec.size() == ?, "Fill in the correct value."); + ASSERT(vec.size() == 5, "Fill in the correct value."); // THINK: `std::vector` 的大小是什么意思?与什么有关? - ASSERT(sizeof(vec) == ?, "Fill in the correct value."); + ASSERT(sizeof(vec) == 24, "Fill in the correct value."); // 3个指针,起始指针,下一个元素指针,终止指针 3*8,固定为12/24 int ans[]{1, 2, 3, 4, 5}; - ASSERT(std::memcmp(vec.?, ans, sizeof(ans)) == 0, "Fill in the correct values."); + ASSERT(std::memcmp(vec.data(), ans, sizeof(ans)) == 0, "Fill in the correct values."); } { std::vector vec{1, 2, 3, 4, 5}; { - ASSERT(vec.size() == ?, "Fill in the correct value."); - ASSERT(sizeof(vec) == ?, "Fill in the correct value."); + ASSERT(vec.size() == 5, "Fill in the correct value."); + ASSERT(sizeof(vec) == 24, "Fill in the correct value."); double ans[]{1, 2, 3, 4, 5}; - ASSERT(std::memcmp(vec.?, ans, sizeof(ans)) == 0, "Fill in the correct values."); + ASSERT(std::memcmp(vec.data(), ans, sizeof(ans)) == 0, "Fill in the correct values."); } { vec.push_back(6); - ASSERT(vec.size() == ?, "Fill in the correct value."); - ASSERT(sizeof(vec) == ?, "Fill in the correct value."); + ASSERT(vec.size() == 6, "Fill in the correct value."); + ASSERT(sizeof(vec) == 24, "Fill in the correct value."); vec.pop_back(); - ASSERT(vec.size() == ?, "Fill in the correct value."); - ASSERT(sizeof(vec) == ?, "Fill in the correct value."); + ASSERT(vec.size() == 5, "Fill in the correct value."); + ASSERT(sizeof(vec) == 24, "Fill in the correct value."); } { vec[4] = 6; - ASSERT(vec[0] == ?, "Fill in the correct value."); - ASSERT(vec[1] == ?, "Fill in the correct value."); - ASSERT(vec[2] == ?, "Fill in the correct value."); - ASSERT(vec[3] == ?, "Fill in the correct value."); - ASSERT(vec[4] == ?, "Fill in the correct value."); + ASSERT(vec[0] == 1, "Fill in the correct value."); + ASSERT(vec[1] == 2, "Fill in the correct value."); + ASSERT(vec[2] == 3, "Fill in the correct value."); + ASSERT(vec[3] == 4, "Fill in the correct value."); + ASSERT(vec[4] == 6, "Fill in the correct value."); } { - // THINK: `std::vector` 插入删除的时间复杂度是什么? - vec.insert(?, 1.5); + // THINK: `std::vector` 插入删除的时间复杂度是什么? o(n) + vec.insert(vec.begin()+1, 1.5); ASSERT((vec == std::vector{1, 1.5, 2, 3, 4, 6}), "Make this assertion pass."); - vec.erase(?); + vec.erase(vec.begin()+3); ASSERT((vec == std::vector{1, 1.5, 2, 4, 6}), "Make this assertion pass."); } { - vec.shrink_to_fit(); - ASSERT(vec.capacity() == ?, "Fill in the correct value."); + vec.shrink_to_fit(); // 减小容量以适应size + ASSERT(vec.capacity() == 5, "Fill in the correct value."); vec.clear(); ASSERT(vec.empty(), "`vec` is empty now."); - ASSERT(vec.size() == ?, "Fill in the correct value."); - ASSERT(vec.capacity() == ?, "Fill in the correct value."); + ASSERT(vec.size() == 0, "Fill in the correct value."); + ASSERT(vec.capacity() == 5, "Fill in the correct value."); } } { - std::vector vec(?, ?); // TODO: 调用正确的构造函数 + std::vector vec(48,'z'); // TODO: 调用正确的构造函数 ASSERT(vec[0] == 'z', "Make this assertion pass."); ASSERT(vec[47] == 'z', "Make this assertion pass."); ASSERT(vec.size() == 48, "Make this assertion pass."); - ASSERT(sizeof(vec) == ?, "Fill in the correct value."); + ASSERT(sizeof(vec) == 24, "Fill in the correct value."); { auto capacity = vec.capacity(); vec.resize(16); - ASSERT(vec.size() == ?, "Fill in the correct value."); - ASSERT(vec.capacity() == ?, "Fill in a correct identifier."); + ASSERT(vec.size() == 16, "Fill in the correct value."); + ASSERT(vec.capacity() == 48, "Fill in a correct identifier."); } { - vec.reserve(256); - ASSERT(vec.size() == ?, "Fill in the correct value."); - ASSERT(vec.capacity() == ?, "Fill in the correct value."); + vec.reserve(256); // 预留空间 + ASSERT(vec.size() == 16, "Fill in the correct value."); + ASSERT(vec.capacity() == 256, "Fill in the correct value."); } { vec.push_back('a'); vec.push_back('b'); vec.push_back('c'); vec.push_back('d'); - ASSERT(vec.size() == ?, "Fill in the correct value."); - ASSERT(vec.capacity() == ?, "Fill in the correct value."); - ASSERT(vec[15] == ?, "Fill in the correct value."); - ASSERT(vec[?] == 'a', "Fill in the correct value."); - ASSERT(vec[?] == 'b', "Fill in the correct value."); - ASSERT(vec[?] == 'c', "Fill in the correct value."); - ASSERT(vec[?] == 'd', "Fill in the correct value."); + ASSERT(vec.size() == 20, "Fill in the correct value."); + ASSERT(vec.capacity() == 256, "Fill in the correct value."); + ASSERT(vec[15] == 'z', "Fill in the correct value."); + ASSERT(vec[16] == 'a', "Fill in the correct value."); + ASSERT(vec[17] == 'b', "Fill in the correct value."); + ASSERT(vec[18] == 'c', "Fill in the correct value."); + ASSERT(vec[19] == 'd', "Fill in the correct value."); } } diff --git a/exercises/26_std_vector_bool/main b/exercises/26_std_vector_bool/main new file mode 100755 index 0000000000000000000000000000000000000000..cdf684cc4d8abeaa42fd3ea01fdfd4ef91b8337a GIT binary patch literal 69976 zcmeHwdwf;Jwf{cn1UWnu)TqcaDOdtV$O{O98VnH-L?mgYf*wM0Ag7)@Ob##68jZcu z;;%KztzKTRhepf!kXTyt@SLW^e2 zDY~L)@ukE%e=4&Rl>m{>8%P)ml@u*0alTgh>zz15;C?_`7gK~nvGBSWpUj_|-jW$+ zWp49Q5?O+%+oz22qh%$`*;D^z&t!eUdq^(Gyo05AEgSN|Ip9016R zY!Af+xm9aw1)Q8-fz*@qnBV%HfQK;_fV*wC3+64HUo?B3$(3R37QX5wF<}0dTxQ-$ z-YSBaJaA6_m~STv$rX6#Z_rMVkg^%Z>$isSI_}N*Z|F3`7=-6VxcK|2T(sjyah-*$ zyWhq?8pfO?FHZt44HxZf^6I+U$r;#<$(Dcfs1_HdgNgG>bY4jYzzJUt=db`j6#i;o>`G50PMhQjPNhe#*{1 zds6l!Fcn#$_{`VS8*@;7XZqsxb+K^eqzferQX9rsagm=TdzHwI2?A5T{EfoJ_q$K> z8Fwj0i1mJ+1Uw0N67VG8Nx+kUCjn0ao&-DzcoOg=;7P!ffF}V@0-gjs33w9lB;ZNF zlYl1yPXe9|O{0Z#&+1Uw0N67VG8Nx+kUCjn0ao&-DzcoOg=;7P!f zfF}V@0-gjs33w9lB;ZM)ZxZ;d`k8HA8+_Zk3XR62drsZ|?4Hp(n;J&%+!7ewao@Yf z{tTmjadX|s{H8<3{-(ew9XAfHf90nEV{=nrafi>Se`Ob+8&2ui5;zsGk=h(6?%39_ zxTC4iw|`q;L`QSOh>mBGre%;ZjqlS8V}~)jpflYtZcE>t-MB~PKUw8%YPhUpmal&C zLqkYkaDmG@RN8`^#+@qdP)WOp_Z{iW&uM&~_<-O8HvSowd(_v-a$AnhGRs_+)A#`K zp9=odS$wbPJWBk>g8$gYKTQ0Gg8xwHtjlTKO#D9t{|`HT6Y)m`f5gV$P5irpe^==2 z&S|`f_(Os}WT*cg@ox$KEgQcPc-AQmy14_gGN034YibzY(H8J+Z!R3ZllnT0bOiw; zmCvQn+d|TN-PhUrXOm{zpJ#O*etlMF(;n*TOz7&&juNCv>qb{gnEzGb=ha!ArO;IY z%5Ql|a4$)npsP!m_C>+JI4dsWZxH{2;9s!u#l-Is{2rl`k=rK4rT~aI0*Z4+%}Sr5pYAuWVr65ZY3inYOJAZ7GDd z6!4=h4MSTR))7Se^!bca_8_g5uafyLN4}+!Zz=L!j(mm8cLwsE(NTvqXoFKtzQHs6 zrQ#X>axL>03xCD4I%oOo7l+96rGmS3mYEi9Fv_&^1wUWmmE6`5KS%I$Ygh5( z2RA3QONSm#V_9RQtTD4XpMxH{P6Td*;6|wO+tZO%PIIj^M9{N$i53o)!&;$Ic~s|w$qzI;mK9mKyR_?PVT_Y(i2;9s=y z|3>@^f`38bl}>IXevjby*y;Zd@y`nWSsQ-~@lOfIM1M!au z{xKWB8hA@5^)8(}2Y)z=`5uB!9x?N_Jp!FP1f3kBPEw(h(>mrLjW%X*w3GSF|Dcrn zU_obTpnh>Kb+T1(TNN)#Ck0Gl z{&K-zZsT7gzF6?Z3a{kR|VuqQwZ3f!JG_;Aa0knxz(I!$mZbF*w{M5fN zf3B393qJ*&R8c3B1vgpoqI7~|chCn4{%nO;I=O}T@q!<3<8LH>tl-Bge0%y`QyU}1 zj}iPBJN;_nM+km|jmMcg=(7ZWhQceITu%I{f^G% zL!L&`(DRb#R-|u1+E(y4BE_sOjm?fS8(3F!POtOZhCGJv zf9e_ zF;L%l9Z??bgmHxoBRH@vWK3^^%v2pi1=HbM)wq}W1|lDM$iNl!4cv}*@O?&V;=768 z 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 vec(?, ?);// TODO: 正确调用构造函数 + std::vector vec(100, true);// TODO: 正确调用构造函数 ASSERT(vec[0], "Make this assertion pass."); ASSERT(vec[99], "Make this assertion pass."); ASSERT(vec.size() == 100, "Make this assertion pass."); // NOTICE: 平台相关!注意 CI:Ubuntu 上的值。 std::cout << "sizeof(std::vector) = " << sizeof(std::vector) << std::endl; - ASSERT(sizeof(vec) == ?, "Fill in the correct value."); + ASSERT(sizeof(vec) == 24, "Fill in the correct value."); { vec[20] = false; - ASSERT(?vec[20], "Fill in `vec[20]` or `!vec[20]`."); + ASSERT(!vec[20], "Fill in `vec[20]` or `!vec[20]`."); } { vec.push_back(false); - ASSERT(vec.size() == ?, "Fill in the correct value."); - ASSERT(?vec[100], "Fill in `vec[100]` or `!vec[100]`."); + ASSERT(vec.size() == 101, "Fill in the correct value."); + ASSERT(!vec[100], "Fill in `vec[100]` or `!vec[100]`."); } { - auto ref = vec[30]; - ASSERT(?ref, "Fill in `ref` or `!ref`"); + auto ref = vec[30]; // 普通类型为值拷贝,特殊类型bool为引用传递 + ASSERT(ref, "Fill in `ref` or `!ref`"); ref = false; - ASSERT(?ref, "Fill in `ref` or `!ref`"); + ASSERT(!ref, "Fill in `ref` or `!ref`"); // THINK: WHAT and WHY? - ASSERT(?vec[30], "Fill in `vec[30]` or `!vec[30]`."); + ASSERT(!vec[30], "Fill in `vec[30]` or `!vec[30]`."); } return 0; } diff --git a/exercises/27_strides/main b/exercises/27_strides/main new file mode 100755 index 0000000000000000000000000000000000000000..a86536fbca34eb7a96ce130db17284cdde4edb0e GIT binary patch literal 70440 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 literal 0 HcmV?d00001 diff --git a/exercises/27_strides/main.cpp b/exercises/27_strides/main.cpp index baceaf2a9..9540bec90 100644 --- a/exercises/27_strides/main.cpp +++ b/exercises/27_strides/main.cpp @@ -18,7 +18,22 @@ std::vector strides(std::vector const &shape) { // TODO: 完成函数体,根据张量形状计算张量连续存储时的步长。 // READ: 逆向迭代器 std::vector::rbegin // 使用逆向迭代器可能可以简化代码 - return strides; + for (int i = 0; i < shape.size();++i) + { + if(i == shape.size() - 1) + { + strides[i] = 1; + } + else{ + int temp = 1; + for (int j = i + 1; j < shape.size(); ++j) { + temp *= shape[j]; + } + strides[i] = temp; + } + //std::cout << strides[i] << " "; + } + return strides; } // ---- 不要修改以下代码 ---- diff --git a/exercises/28_std_string/main b/exercises/28_std_string/main new file mode 100755 index 0000000000000000000000000000000000000000..9db50933ef1cc68618d29d8baa9e4012a12bd1cf GIT binary patch literal 52712 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�wPRye+h__KD>H=N|#~HkO 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 using namespace std::string_literals; - auto hello = "Hello"s; - auto world = "world"; + auto hello = "Hello"s; // std:;string + auto world = "world"; // const char * + const char *p = "i love lx"; + // READ: `decltype` 表达式 // READ: `std::is_same_v` 元编程判别 - ASSERT((std::is_same_v), "Fill in the missing type."); - ASSERT((std::is_same_v), "Fill in the missing type."); + ASSERT((std::is_same_v), "Fill in the missing type."); + ASSERT((std::is_same_v), "Fill in the missing type."); // TODO: 将 `?` 替换为正确的字符串 - ASSERT(hello + ", " + world + '!' == "?", "Fill in the missing string."); + ASSERT(hello + ", " + world + '!' == "Hello, world!", "Fill in the missing string."); return 0; } diff --git a/exercises/29_std_map/main b/exercises/29_std_map/main new file mode 100755 index 0000000000000000000000000000000000000000..4a70ccf33a865f6995e3f313c3b5a281f4d36476 GIT binary patch literal 97016 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 bool key_exists(std::map const &map, k const &key) { // TODO: 实现函数 + for (auto it = map.begin(); it != map.end();++it) + { + if (it -> first == key) { + return true; + } + } + return false; } template void set(std::map &map, k key, v value) { // TODO: 实现函数 + map[key] = value; } // ---- 不要修改以下代码 ---- diff --git a/exercises/30_std_unique_ptr/main b/exercises/30_std_unique_ptr/main new file mode 100755 index 0000000000000000000000000000000000000000..008d17f02a2cea5a5cb65306f966b56f1777a7b1 GIT binary patch literal 94920 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 sVQSM`pZfmBU(HRw>88>5eSY`5U7fF;_S;(; +using Unique = std::unique_ptr; // 类Resource的unique指针; Unique reset(Unique ptr) { - if (ptr) ptr->record('r'); - return std::make_unique(); + if (ptr) ptr->record('r'); // 如果指针存在,则存储字符'r' + return std::make_unique(); // 返回新指针 当 unique_ptr 变为 nullptr 时(无论是通过赋值、reset() 还是函数返回),如果它原来持有对象,那么这个对象会立即被析构。 } Unique drop(Unique ptr) { - if (ptr) ptr->record('d'); + if (ptr) ptr->record('d'); // 返回空指针,作用域结束 return nullptr; } Unique forward(Unique ptr) { - if (ptr) ptr->record('f'); + if (ptr) ptr->record('f'); // 返回当前指针 return ptr; } int main(int argc, char **argv) { std::vector problems[3]; - drop(forward(reset(nullptr))); - problems[0] = std::move(RECORDS); + drop(forward(reset(nullptr))); // Unique -> fd + problems[0] = std::move(RECORDS); - forward(drop(reset(forward(forward(reset(nullptr)))))); + forward(drop(reset(forward(forward(reset(nullptr)))))); // ffr d problems[1] = std::move(RECORDS); - drop(drop(reset(drop(reset(reset(nullptr)))))); + drop(drop(reset(drop(reset(reset(nullptr)))))); // r d d problems[2] = std::move(RECORDS); // ---- 不要修改以上代码 ---- @@ -53,8 +53,8 @@ int main(int argc, char **argv) { {"fd"}, // TODO: 分析 problems[1] 中资源的生命周期,将记录填入 `std::vector` // NOTICE: 此题结果依赖对象析构逻辑,平台相关,提交时以 CI 实际运行平台为准 - {"", "", "", "", "", "", "", ""}, - {"", "", "", "", "", "", "", ""}, + {"d", "ffr"}, + {"d", "d", "r"}, }; // ---- 不要修改以下代码 ---- diff --git a/exercises/31_std_shared_ptr/main b/exercises/31_std_shared_ptr/main new file mode 100755 index 0000000000000000000000000000000000000000..edd35a18466e48df5f44ad4b2394fa712bd74423 GIT binary patch literal 52248 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 Yp7^h6>3jc2E5B@(>*DRr=7%@`4+w>t%K!iX literal 0 HcmV?d00001 diff --git a/exercises/31_std_shared_ptr/main.cpp b/exercises/31_std_shared_ptr/main.cpp index febbbcc6f..3c39ebf76 100644 --- a/exercises/31_std_shared_ptr/main.cpp +++ b/exercises/31_std_shared_ptr/main.cpp @@ -7,39 +7,39 @@ // TODO: 将下列 `?` 替换为正确的值 int main(int argc, char **argv) { auto shared = std::make_shared(10); - std::shared_ptr ptrs[]{shared, shared, shared}; + std::shared_ptr ptrs[]{shared, shared, shared}; // 共享指针shared_ptr - std::weak_ptr observer = shared; - ASSERT(observer.use_count() == ?, ""); + std::weak_ptr observer = shared; // weak_ptr "当前指向同一对象的 shared_ptr 的数量" + ASSERT(observer.use_count() == 4, ""); - ptrs[0].reset(); - ASSERT(observer.use_count() == ?, ""); + ptrs[0].reset(); // 变成nullptr并且清楚引用计数 + ASSERT(observer.use_count() == 3, ""); ptrs[1] = nullptr; - ASSERT(observer.use_count() == ?, ""); + ASSERT(observer.use_count() == 2, ""); - ptrs[2] = std::make_shared(*shared); - ASSERT(observer.use_count() == ?, ""); + ptrs[2] = std::make_shared(*shared); // 创建一个新的副本,原对象的旧值被销毁 + ASSERT(observer.use_count() == 1, ""); ptrs[0] = shared; ptrs[1] = shared; - ptrs[2] = std::move(shared); - ASSERT(observer.use_count() == ?, ""); + ptrs[2] = std::move(shared); // 移动语义 + ASSERT(observer.use_count() == 3, ""); - std::ignore = std::move(ptrs[0]); + std::ignore = std::move(ptrs[0]); // 2 ptrs[1] = std::move(ptrs[1]); - ptrs[1] = std::move(ptrs[2]); - ASSERT(observer.use_count() == ?, ""); + ptrs[1] = std::move(ptrs[2]); + ASSERT(observer.use_count() == 2, ""); - shared = observer.lock(); - ASSERT(observer.use_count() == ?, ""); + shared = observer.lock(); // weak_ptr获取得到shared_ptr,引用计数 + 1 + ASSERT(observer.use_count() == 3, ""); shared = nullptr; for (auto &ptr : ptrs) ptr = nullptr; - ASSERT(observer.use_count() == ?, ""); + ASSERT(observer.use_count() == 0, ""); - shared = observer.lock(); - ASSERT(observer.use_count() == ?, ""); + shared = observer.lock(); // 得到其对应的shared_ptr + ASSERT(observer.use_count() == 0, ""); return 0; } diff --git a/exercises/32_std_transform/main b/exercises/32_std_transform/main new file mode 100755 index 0000000000000000000000000000000000000000..d00dfc0d38f9c3e17cdb24fe6e04ce2a4bdedb91 GIT binary patch literal 83352 zcmeHw3wTu3wf~-(0E2)a#)1kGAl0A&@)$y*K>|r60g5S!N);T!WPqu8nGA?xH8xtY z*p?_&e6$9n*FmZ~pc7&jt(O68LlD8II>jf)IB#j3qB|E}kMhet*e~S%udY z&cBj;t$#AI)hh~7Iw{D&?=LG{P-gus<2P9S1mk}2rl&uD_WQ%ZRbd8j?CCu^NfqW! zA{u{$sa%o21S4hTDLp0;v6Z}CDBsk7W;>W$Ja0~6 zL9wDrh#gE9T=~cDhPxD`K%4_{4#YVS=RlkTaSp^e5a&Rg191+-IS}VSoC9$V#5oY>K%4_{4#YVS=RlkT zaSp^e5a&Rg191+-IS}W-331?9&5NyFt6i;K`J(B#XUHDxbKUK2&Fl2K@;X}@FX(t_ z=cujCjia`1^o;7jzRoQZZoH%^$+crz%TBSU+4H^J31{VPYxP{PwWaagjuz4IR*UDn zj*X39>Dc7Cwxc=V+H;3ntj9jqM0)=g-Vb=hlg%FYp7ol4bK}_^zW{EhZ;hoLEsbC3 zcn!GO^Mwuy`!>Bdp3~9Xcy-4{&($598n5bTlHU_MDD4(c8R8_$uzRKd*)s1N@h;Q! zly-Q9_k;EkkDa%Cu$W45l2A@jlGiyFWg5HVlBV4{%T4%j9kuyLe*L9+@}$drbe=W%ywnzJ$_QH+Era({nOB`+G|0`#MVJ zCHS{p3AnLeTV$dX8*Iz@Q;xHQ1%~c`hOSxL}QX@nEwfQrQVbFHaCvwX!p3DY{?(7^-~w> zUc*$MRJR|IKi*xCnV$p8vOGFbmL+LWq>i?59j&7}T1IpXVmb!R=zJM<^j+lJHh}#G za9L1C3n{FJ{XHhl%gO(^P`o{!7vb#^^8Yvc|69t%y0I-2n`V>$r|kc!8UAYWKg#|` zP5%<||0nzZlhZ*RWt0C0?EirozJUDy%Km>f{Vyl~_t^hEPUq0XrVGjc&+PwaGkga5 z|AGDgVEU)R->9Q|^*RFY$Ab67C&_!?q^6m8kHvd0rT;Fc|88FA0q{PHc>gy0z0EX& z_gyad|Azg4W70B^(s-TyUpM_dq^1ujot^Bz(+m%pTHp2(`@dxRL#EcZ z{ha-OZu0(j z`u`gK2Ja`@cs~QYCq7BuzcH!lJ-o-_eJiE^IH&(O()TpXe|H%C9%H}944$PneV@WU z!v2pSEbERZ$^Sw2f6(;bO#b(?|NWfKzDZ5@lK*$u|2t;*4dlO;{nwiQ_mThI?0>h( z`&-Drk^LLZ@ZTW++u8qi)4zfISF`_WPA744({l2^iT!Uf!-vVgp8e}h|7!RfynhqC zQt!}Bko$7*p7dN+;{6TmcLUQ1xyN~)^=-@8f0;?k z9P$saf57xFB!55q`#GK3$xRc<|2p=+&J3SJ{@1YoHKu+4O&({4Zhu zOE{guX-#jE|3&P7ks1E?LXA;eSg0gV=wN>Awa32JeSyyq9(yWS@9Sw%EsTTXrto+CEfl zYi+!~19smQ!|wCC1}a-gsDAk0Ly3mGZLklUx>nCZ@)&WtR?loj zoF>ZSc)r*}VGkp0O253$2`;it2Yzr5>sIxjns@JPQTR(O=ziT?vVJ@dZ>Wg{N7 zga5F@JKNxXZ7_`iP~WiiiAT=>TkAwCKh+(@L%4Rt5w7X)#4J1IBf}|oAmn7i9oKgV z*TA(iTn+P^&s1Xp$GZCCuJRFI{+Cz2s+z-s{CU{2Wu+SVM>@3HyZj^5z4z|ni#;zjj_wdMMAN1x#GWj){R7Zp7?U*3$9vmF7&C%*)9D>L?^?KC zAwFuq`?2$IhF6Zenvq`_#iRO1+-vYI+X(!Lw;PRblAogUaUDZH77`{tLr1>HX|$pa zDGeNMOe7smV~_UfVp}t4*@WN=8n8h=ul!*Ge0?I@#c4@i%6#S2KoBL7-^BX5~6 zg$GYwX8J90@>Lrpc@q8dIwSIvPjZ~l+6DR3<(T-~0{MmR@B9hUYX?8QF7W}?(;C+K z)K*`myx{%;F3J0UQCKPu{Mu0$2OuNus0Y-sauWpJQC8Heci_Oa)b`(@IG~HlPw{Y; z7W%B=Ez=d<41NwoGyA7RqE3HtbP$m2$|y#q*V6XX(haMK^qj;IcacA{$& z`mgsOZ->YqWg}T29#dG7?a$!fwfYM5DJn1OXQhmc5!)!t|KK~tX+v55IK*tDlAkV} zpPDX&{{-+_pqwVZweJ`cr;HUjk#CJwy+-s?TYk%9$dIPfA**)%Lw%+p2UKRry5s@Q z_)1sTGssiQx}iJApnf8BX!1q8qB@~=frGxBjwZ`7XqI86+-o#*o>VTUyf#Ai_57$# z9rHvwRM$q|Cv_y~ACsiW;4)H;gA%S|FY1=;O2ejXzv!{^gi8!JY%7B<*t95vq7|pu?~Ag# zkRHiBXt0zO{Fd!dZxav|6<;eO)q!v~yfqwUC%LD#aTd}t%7HprH?}sfa~#~6iFuug z2q)#1t?sJgNdI}>xx$SKlClU`V={B0}PPiK0dR5XQI&Wv1B%i{} zr%`#GufbpEfgwvoKki^zpX9R2kZh0O>Dl;3`~rUx$?rVI#9PuO7Mk)^9n12}fUWZ& z%TT_9eQwhS_k%vYZP@h+(Rp_-!t_S&oYL-9Jcqh;vW0NZM6@l`Nc|X(ufR{Tqm4ej z+2cpQetie-=8)rFvL)nrf#ezeFty`$*bz!sU*B;B!pU(1cp~jS)QgNu{UYoF(xVh6 z=2(i`D7CM@Lq{sR&8kmz{ebbV(h-ntsVn+H)?wcm@1!@##_@X5?=(h_LG8L9S98dI zg~kq!dOrrAQC1Zm`O(-SD9dQoYkFTqGIPJZ4{%7E6N^LE=M_Vp}t8LKqvJZBny#xx7iyc=Z3vTwi?ZC zD0@xyKUDv^O@Z-Y#NM;#ZHzTYH>x=b8lxHfG{=^wB#nF;7kbe@yD?sX-3{A&6UKW~ z-y6}!ijE(D5Nm;WAC0+-g>r1);#nleG|i2RIu_x((ND`Z`e)IEyJzJ5*n#m%ZVq6M zjM{DcQZ)rc?qHSp^|Bfdk{r0xYj$$m7;U4(Ii8neYJx4qq(QZiw<+py~ zBQN@9_gPpgK110WQT?HohZ7(B$KsT~F(B5~Y_MXfyOR>48}KdQunkwL@I{JRGIVA?dYA4uF(C$|4gz^*c{{qrA-f{0$<`EmMCO;a@-03v?ZokLI8bLysBj4ZB$9ke|0-yxa99^;@`m4ssE@ zP7VD-{fVXSocM+GNIuKK^X|e@*{hHNLEH07%Tmvp zT##)c?J3k9bdBTu^Ycg}R(vCGqEq(eki{1%Pw>GK$70v0_AcW<4;%B$TM;kTJTuKJ zQ@i>TT(Xznps>B1XExSNphM(*^Scxm^ig>!%@h~unufP%4%;&R*r~}4>nJ(T44OBA zhUUk`9>kS$Ky%2(nh4c9jY|(>zS+=QUXSVnD8C;fAL13QZKNZL7}4<_&#|#hYHo+ZkOJ!?x4=39SG0I6org8ZvTGjJoWJUdrz~ zk$kK&<2W|!W?oI#>6ZDm-tgBU4AEwe8?Ch2$2Kv;+IVgBi5o8xdp2Dn_MnfC*aXzy zoI|`o9qaP(YNxfW8uI5FGCiD~aZ=bcaHxmK_{2qRU$*}f z8s9yG@$~=J@!f3Hy)K8b>gvk~XCL1g`+O{Rzk|$0_}5SMGt`%LH@*viUnEO%d{?f< zcYlGOVK0rtel1F)yYbzBcSQG#h8~O3yN%Yqi)8Q9e#93|AMAA2rzH2(ClD`O(EV=c z{xulG5q&ye-*lkI=p%bWPgEGKO+?zHtsJtvppE+aD^Y*2N#+ZzVOq+i)t5deBIlEL zUa+-w=k;4B+&reV74H*ZL&7HAHV`i6g@)79`rHNC%?Ps({KDRjZLo`n!}dL+1^zA1 zU7y{e&8uue7{wQxo}s!1odRtuQWh>>l)pngNPP=kMPr|dq{~oVo%cvHveruT6JE?w zTI@6Xci7*S?=kXJ`zw_0qj9+$m!KTRc@o9zXdN9@rbZfXSoa#zd^Xwqv^Rmqp4Y-n z;=P81Zv>X@0q?YKv{J{=$GGNyy&MbDSO;TAN{4t)^YwS&o%V9kdjZ}h-AIS(7q$%^ z)Zfw3*)*P|eG3$h#->I%l9P3WWu5JqhIQ|0-hn7L`UeV2eOwdA`zhRwYcaNdZ*=yP zcyBqnD0_`DzkxiBIc=IR+r_d%Y0#R&vk0%|I#imopaZB3RDPOE+re`}hk@0YT<6G7Nx$Yx!*BGq}HX;r0!n_>s*9Me&M~k}l0csuB(vBQt#OS+? zG5Pn9jzumV^4cuJXnMyXOgh2{$gw4Vhj8^ow-@!&nRlP)%6r=q-bSx6Cf|X1v>m*E zf^^%rkp}nciG;t*Sk?pT-%=i1n#TSBD*rbS&l1*wUXnEnjhb#Edx-28gHB@}=O3W= zZ=fSGreBno^TE)D`A z=nK-H?a(FY^K;}F+NJF?a-jcpr0=(vA>Y9+bBGIlBV}wLXm0lmd{T_gyU)T4hd90J z6LxmrZ@C~B<7f^9;}xn?y^h9y8r_Fd-`J~s9q9cH_#-esZz-2XAB{z6KaU)5f%lZx zRKy{DJ_W8$n^8xx?8HcWc1WM*^_s_vJ!GqrJXzA!!W%ZYlsV8va_nf|=9_g)^hlY} z$NyTIMj1bM8nix!^muasd(#_f9T)pfG5-j^&V!h5dJpqiG~X$8J@`(#p7vu&jItSh zTYF?*j_fng#>DWJqhqo$mPl-C{6%itfQD&O@1gIZyqd6=5i))w>3IrkgeRG6IqJ_= zeWkY7U2FR^Mx;KB^boC^N_`GmNWZ*Eb|LEJAe9OAa2M4n`cAc{K(jNnI&iAjR}hct z&LRs)PuijI7yWeG#9RxPdj`QX;^QXhC|Vn*{)^VGk3eQ6-!LE8`ncG07-vCRux9=@ z!yoJ28$nkK*38HK59EBjn&+YU!S?Y|@5uSTJfaP@0F@7&ZKOY=J+G-$-kqbi(s>Q= z^hWBNig-UYr9*9w_(yTyF!BX2Wj!Kni&l>`FO9t$i4^Z;iU)pEycdmlT>po$7cRxL z0qeZ3$F8NgRF|0l+|~km=)D;IG)DK;_?@8j zv_=+7$Jq0vaj29Zlr0IyO-t=BDw+bExdCmQxu&J zVW=;pdXapR^C;bKIM7yhVIe!n@+c1CeCdT+OZM^rxSj}D+0m{Qxem(vL zADi*NhH;%eeyOC=u-<1$&^3aT4*X8F~MV zczF@pB6!>CS%~-;`}_)f4p^U)AAOVl2#0;jiO1m*?X+HHq}M(kX~@0?`6IrU*E3Zg zihV`+_5yA5^*wd-c09qpRp zl6~YL zkzWJ+An)5`e~C1gb9pe&Da#=F4IW9}b;losA^t4t1%JGpHq{-Ck5?g%!8@W$*`cN! zwxJEp0G)O{WQ?h(9Z|paGVyAFbDt&0=L2yzGv9f?F@1;bmTRl+s1H|D-nKnRFNw$J zR7b9ahWY#8cNp*9QR3{BCT{115gtF_cD6{oCs~($=MeNmh=;k>nCDXu>hxSDnhs7CO*F?u^ceKL z?nIwc*^sZLY{(lnNp#sXo7?EK^mSfiy}*UBqLMkyzRpK^!8@WaB5&k}yk%Jp8MM)7 z*iM`NZMB_#0j%3j$+DkTIzi>#eSMPNC)p-`8~qpcRdVeFG)Y|mTB!}7ZCdI$aManx zh_YR{e6pRLV=Fh#TtFtbVGes6_8>vm47|bK4lr*ve1|;8O!I%nK5Fz4^<%P$FY^2) zXf2|;0-YnsWxYsqF&pduoIP58Q*DyQSziSPJ=`wM{hhjAq;QK7PVxYH<|4d1&HLl~ zma%0H`^XxtZQ#Hdkwf$y7_%cswz<)&%?aoWOIx&0*^qm3v)5~phb^^@yM28 zZlvcP^NxJ)uf3n4y`QPQ57*w$)85Bv?-y$C7i;g6wD%0{JxhDPRC~W%d!MPjU!lFv z*52o7@7HSY*K6-fwD+aj`&YI1YVG|t?fvW8`!}@rZ))$~*52>a-XGB3AJ*Q#uf6|= z_WmR7{m0t-Pqp`-srTc@T_YBH_a=(4cW;8&>S`H&C_%KHjq5dpIR3~GS3-(+fr|j) zmyF;k+V2v3UD#{@zrmtFhyrh=n48COa=i<+IDg zxFC`a;hyqM@#a~=>vSM~zcTMuw@zoGH_Z}$q(-;QU&raL3rBhPxm_tO?sm6pw;S4J zgC}8^M?C7m0C=w_0p|5SPonV?v#OkDiRaw{kN1dMYp7A1LI+9FDBTzb|x1DcT#BtwNtSD`XE6rdRjL3|l9a)t`!%TQ?n znxPORD_e%jRH3r6RVY9+6oRCur^#SGCM-Qog#$LjQJ|Ha6n>J5~E?x>+;XWTi9&kk!W6o+vz{AnCOpURUU9i_Z@|R&cDTpz67a}TMh^BNQlG24J zN*Cfse+}~g_K%4_{4#YVS=RlkTaSp^e5a&Rg191+-IS}VSoC9$V#5oY> zK%4_{4#YVS=RlkTaSp^e5a&Rg191+-IS}VSoC9$V#5oY>K%4_{4#YVS=RlkTaSp^e z5a&Rg191+-IS}VSoC9$V#5oY>K%4_{4#YVS=RlkTaSp^e5a&Rg191*$97w`DuFVj` za0vjeMG)#P0KDK&o&Q(w>a4x?o`>528Wg7gDV`e_2z22Pz3V^le2fPdeYh&{;KzJj z`|zCS#w81QF7@C-20Z5_2-gNY!}^J?Tkzc0UvxDL5M3L*qAPo#aQz<7F+8bfh^_^= zIO9V+*AGH^cwQMKy55I792aTK8;tmPzKLfm9{d2e>%Z|_h>JDm;;F{-FrMde!A2XN zgfoTvVmw)RuE4WE-Ao|-{;R5Q3RPG5=LhRoR0V;roj0d6oay(cr%zo{ULOkh>%(=S z>Sg|wq2Nu$fqA9)5LjMb=MUGFhr;#6fx^PVseziR+VZ+!VQHpcPa&(aCQx1(%vn(% z^e-(B1jB{%=ar`UGeQ-Gda&$JO}!s^1+$g~!-!J2QhqHBr>9reECU6>y1JUW{EWhq zIRWEKMrE*iS$MhnRFEEtl99Hgyux2zS665 z&7T7rPB#m30yWj(!HPgwry$EeyHICCLG6`gX(vQW$eFz%PBr61nM>(8GAkp(tPGt% zUjQma=^#~oQv%_eYlEozh;CB;tifzDnx(FXDh^qNjHpP@_WL7D^OuMH!Rm_Qk~twr z4&It!Vo50MFNa2^WI`3eI)7a-yu7aFCQA#AM4S?+43^gw zepO2}CtSlyTQ!o>a85W_R~4!*4+o`cEh~m@wP;X^O}@_RQ+~bLDNaRYiA<4P(%0pc zp=H&6+ymwhQ>5yfWMSb%fAj}dmHWBb2K~WRfnY7&QHE&p%aY)-P_-Y*HL%?90xPW^ zOY4FTF(tDo&azdj{I$Wl`kHEx6~5WOGL3xe!{vb+{DI{+pi2r>T78zSD6gv!ASMLz ztAbU5s#@t*)vQFT}szqp%>g@lCX-*(~u{V&r0cmA0EU;h)B2A*E1kD-n- zYiZ!;oKO=yKOy1RCL&=wF5(q#2NJAJY=g^@0!yp;zDv0KqCUk~Y7b(w%agGAHV~8E zlZF(3cb#m*dfF}ACuhA3RPA0oOO_p|zIL8?$WsM7V^uJ)A{_KD50;}ziuXLYzz=t+ zx&7j=o~rUtwfMR;9UonEC^0w1x89YOmX=bKx?o{yYHG7PH_tcnY1h53kx8Rc^G2nn zCi;?-7LUqHNl8q_Gpx*)=uJ-aR`?1Q_!cLnCMPE*C+0S|QVVjklXDj&=O!om@(K!` zcNJx)Hn=LXbA7qK)ZCKf#FC_vb*_|QzPx+!f8OG>l+@&ug(eu(ir#;LfEkLY=T@dC#0Gp76c==*G3_(kyt<32OOTNr0E z{sJxnqwf`rXEUaI{wVx<##?ar8R1VEf5`X_Tp&jAQ*kF6eSeMdV#XbeS23OnbDqL) znXbYwWxR{={fyfg55R?F6h0wOg};$;8soi;YZ;Hk#bp%!UdF2#Z)LoZ@gc_VG45b| zB`!RZ<(Z-K`#Iwh#tFCxjlR>phg9Ay#=9Bc&iF&d#~G*2RN-@Qff~gxW4wa#t&F!a zUdQ;)j1MtB4;Qad{K2?mj`A;JoWyuB<21$(F{ZoeDE#Y;aZjDZos8dL?8Aj_l>T1E zs~LANeuMGg0u_G%E`Fo%bpIozpT&3;rV)cF2C>1`N@$HPm zj9+BDf$@iopJtql3->6$HpX9OoHSdd-^#dx@w5w6_!hrn&;SMF+R@tW5#*oRs4c0ReEa~(>)G9LIv6@CljLdJA|Dy6@U@#Zfp{1RijSCzhh#Q0;zNf)a0%I2%@)r{|C{6of1 zGyatEKE@drsrbhj*Dy{lRq6eNaS`KB8Pol)L{Djoil0`da698l#+xUo?@u!xbFsp0 zjMp)ydtxcQ&loSfTH(!?sPL;8=cOvVnelHKA7VUzqWUhbQStx6IF<2blhpSGjDN_u zlJT6$>U%Te!;D{HT#=@}(|xu??=Hp#3lz>zSKk*iKFYY6u|Gq7-^KXXjE^v$nW?^~ zenqAC4C6A!DL(am72{UM_cHE3MSX8)d>iAz*Q)eBW1PfzMV1O*!1$kx7cj1!s=jY$ z{0`&Yj7ziC_hXFrGA_DKTI7!SNueW!bYiJuD?4_>J7amGcA7hR^p zFJzpMtMCTK>ltrl{3+u@j7LvX;fF0!>H8TcGv3db?k6UC$gUy!*E2rCIQe?@ec^QV zeJ6nCu9mCvma*{xRch z#x>~2>HA#9{{c+)Y6Ih+^LJ6M;=j*$B;(oWw<&%aW4haxa0TO68Q;lxLZSM;nek%A zA2R+nQHLyWgFz5@Lug>Pg01mlkx4?w?2-&2;V^uES;F5@o7 zbkDU*VBR17B86{e`~$|XF#d$`KE`F}2PwQ*rsBWLIGgd+=*Q^$T*lvKyqNKujMp*# z7vonLUx7;78x$@;zeMqK89&Ilg7F_2H!~iDeu=_A&v-dw{Ct4q_iK#P7*9k$MBx`OUe36Z z@sAj9V0@JEe#Z0AZ&7@@r=05ZHpV{2Pcf$Z%jx@B=%*+=-D6I;kTKn7PIwFBS85dQ zU`+R%)AyC=cPM^Rox*z=mofe~<4VRk=vOHGZpL>q{+RJE87I}N^gd*q&De*2gyM%8 z-^q9j<98VEV|bfoADaP8PL;|-t&yV!uUhRUk5(ZgZtlC zsrc&|(_Q+M-V==JPJO~ZW1PbH*Nn3nw=phae3bD5#{JO`P=3o9pUZd^c!oOxrclp!z1B{axf5MpV z_NVUy7pwB*F&@pB?)s5LaME@Vu1|I_!cFs9!CAY8?mehYx`9gOKW0SLSC45j*H z{ZqhrA?Tv-uQE>fio&ztN#WODt1#wRCB7AUio%aag7kg+OohXY>Gu=p`->6}!<)iy zNsN2yCn>xS7~$~0`fFF1qRPLasB3@-o@m3fYZ20dsoRMJ7FJ!};Z1{i; zkM3uUKi`G}HoV$~n{4hPj z4Zmf>?Kb?04G$V1^NYyGXd6zm;Vc`z+=ge_a0(=A44w&iF2-{So{4xSR=L$U3wuDg!v`xZuqV#1U4*fWMEIOy*+vRwsWu z)^kq928PqPsOzvO6JJ(VYwQ2lmz7U;`O5E)UTN~n)unE>>BKkLU`JA~_IB9!>)2NH z(|fgR<^SJJHYd4hBC=y4zSZIX%vJ~LOnD@6?(>E`C3LhSR%qD^oiY`M4vdsiw$ z_2J@>WxHQDTGD6T>}1*TVnplpUIcq{FPvBE^V1eCY)inNHGLaS4mLAZ*DtN9t1^pH zOc|y7{WsN>*ZM=)KvP_T4Gr^3u|uq+?=%z^Uh5-`UYMEePb)0McAzqUX`#Qgz+aZG z?@%&I>#)UWirgAw66(k$hj^LTKhs03zL!hmZ4CN&UxrbzQ<7D8@={rE7FN}zecLMS zM)gN&{W8c0gv8uy+WQTWdX|MHSJ19Vh@8I9%!fLt)aY{FPwPmS+&c!+EW7@KH};em zifG%WTDWBXoM`ULKvzk|ZeprO zBNvC}(U&;+8Cq$&Q++(1m`a-it7_};gPOq#e{Fe)l!}#Mv}sD$sKo`<#CU8gtOzbG zUr`yBdyM_z@?{8kWtrc$^)e#^Mr8R7+O{~q+|*{$No}DUHl$-0GjDwLE1i#g5G4Z? zL^kQEG)-JzEL)95G*2iGy~O5jVyFzq-lV%`-(9xQ=GdAjw`^-$YFP|pWfohVInvgR zmhFLsCtfe9GkT3^-c8A)hs2;jD@Yx*!W!!g-;6G zVe>3B?$p|vP&F)5Xz2N1p>EN3!$Y)FsRUzC-c3wUr}kjiM#b%!ed#{rTU}if#x8U^ znxiG56P}5E>gK27Dim!FOk`M6wzEaC2P8cdFx^*;lTLLwS5z6Qq9aU|g_$^LVP+~T z(jTZS$El|PSmlrGp4S?=ola^2epGXPeKDP4V6vz9Q7^{f2!lsvuz+q0R-vpg&C2|E ztj8(r1Xno`Y>d=0VCPhZmIP{R{kC#eNp0p(R&B;KN;x_jC^-3p(+Sa|2`*tDbnFyt z*AHq9#L}2z7pXFKk(9~RW1}_geCvq_i!O{ANbAeA(`jUBS~`L3SXKv4TtKlZt>ScW z%@j(#Q>U($tJo=Fy*Xu|)rIQ)IKNOQ&t|~v#4xv;_Ll)8iPNsZ;R!n2W({3D+kTh> z!d|knpw`;W_97Xlc)hhEVo4y^`iXb)-3nlDshYAhRHv(Xs}#o~O0!h0+y1>ZUt(`9oE; zx;l^I*_==)G`D0WY}CRM#kCUX`O+DFE8EhcJ(xI}buu-8(!^wZYM*7U#h8?miV!v{ zC0|e$sI0F;;*qd~GwZ_@bf_^DMqRFB12c;6kmBo1KHkZH~JYO%U@YjQ%mhYPF7F@m%co>k~CpX56nXxrYXZ; zhRM0Y(j0#otV`_JF=xA}6J(jClb8m1Hj1D>sb8(EDX)+=x`mV&Bs-HwlWw8XY!ImA z$t2QX+)SDuF3nd&vYBNsrNx?rwy~uJu_1*c8$H^+wH9*Zq!9_bR!EkI2sKoui0ndB zEX7Pwp!{aiB|bVo3+7Jo7gHVzV(bmwb|pBh@s_A&CF87oNiWdEIE2VLCr)E3y;kiS z7e&_U*DS7&B-y59Wl}iX99&fkX$w}_1TKV@Dpe^`Az=nNRCsg&G~a+@?;vDFby%O; zb>!guKCm#$&cdl+p+!6+?HvMb(Mj`3DP{U&DJ4rhT}_-wJZ)-Ks+T@w*FBX~&E0hv zN_b2$b?z`?^kY(yTjiK~S?|-Z%xrRqo95bmEH@w98-uSpbD)Q%(5hu z9;;8_F2UMocAr%=tCP6lSb!TM__6~nr4q{(9SCo%E0k*k{bE+ME1_w%Ucyq^ z7-coe$;}gLg9omToGDpZrH_6xP#qODAjx2&e>uAP%AozejoG%F3t(QaL{j$QZf{eI z5gmP^eb8+ek>c4=S1eFsc0ziYk|k=-f&$+5F!OhkLu4i)=FHKFj*&^l_i0lQY#4Kw zK!#{N zJX_Z6)Ua1&Nj`s;mfjeXqjH`&B|=A^D~QiDpqoPovm&! z(j9$jY#v*ITa=}BxcR?8nON$|O5LeYWZiWlT5B~s5u3$yGPM%PyN4C&Q<6uI%VCyw z0IM%z9rw6~-D~=^20>PXwo-n=Yu+;~3mT_X5@@tW%OTo$M(52b&8uhY`jlozGjNfS zsMAXP>5%T2{N&6|Uw<2Gsj#OZ2V_$lh4w+bBi&lJt9pIOBhrV(Tv+C9+n+yIm9-ml z9QQdf_4Jjyk4wD079U;aWWOD;&$^YOQ>q|hEYDg@1R782^C>ZBC;MJ#jOwf%)UvkKlN?CV|HN))=L6d&T)xI*J=U%99V!;&_(a9DuajrFOQoEPEBGi7wbco8pNdUAgG;1Odd%Q`) z)#Kh{>U}KP>&@Wv(1kIVdHxp+NMq7=N*NP9r`hA8Ro}Z?ZQ`4ncW;)tPDy5Dt3`$* z_Eitd!d#CFW4)$F8-vDJT#{G3qhoYjO6zq#QP!NsyabtoV>2Rz@QG z3DqGnwY`o{!OojQ=U@Ys{A&(|?P7_A)GD;pStB?H?X?6&HB6^G*x2clB~@N(TIbjX zW!-0KFJEo+feOys8uBEH7c&dX5z=1NT;%6rtfYkseY71wE3|Gd^v&9$ji0nJ%TGHD zmubgB)wrmQC3i3`*@cQX&#$BKm&i{l=$?0!DP6vcy+;w=qiA~|4} z%c)Jhy920whQni*K90n z*7o0(%8G9Ff%%bNfP!l1~=rYgm2 zG#|3%ZD-C;qoi=I-HmknR$}|eyIX6-q9SA2h*srzn%ER;@uBAl3QHNx34s{pHfp<1 zI-d45N0gWsK|t@|1-pt`=+EfnMk0S;WvdC2Q!SUZ>KnIc58`N#nOBHPVqU4n0_V)!ye_ zQ64VW60>%meNv}B$0S*W_L?v|Ypteytm9#rv{gq|PF{9s^hLeG>9LSb{|KO0W**l{ zlvtr6nC@o2%bd)!L2G_?e+Z3LQw6=d08Y=fwnCAP(r>N?RxZ)lY0=#n zZq?FH;Nsk3&5AInHv`5ZmHLPr{%zSME0)Tmz4BLWxsyWwE$PLQKmO6JX_3nu3sDSR zP8^eo(H^u-?~dG3eUz@qBH7|MYs;5u=VGmsf;nmd89yr=qr|?Yp-Sznwl%ghE1b)a zMZY1bw=K(hMUQl3V_=NmqqLj^QorQMeW+RBn?e=g6-y<>8Pr7tG93Ib=Q5y=Eo^0hpt(zUt?pyD ztJ6hqr)vgCA1s_GO{ag`n>$Y5bxk9kQJJvqj1b*2E;E=Tblm z26Y9dYa8=t=1p2if+N4}3>!yXuLMuNHQRDAZ6x57?y`xfAZO)0D?gtPyW)<l4c4s1$u@XLs1K}M!SxXfr;GBTsfmf?%$L5457eln&w#Le=lUldXQ z|LaeKci^|7&jP|P7|6dw_~CaZ++D(rAN9Zw7{eF8h9mHcK=SV#;hNcyUWR5Q=jvvzrN>9FFx?%$d5<pO}(=&Do)ygGc-RJoT=>FAo3XU-|m5z?8usO}^#DX=negY{3if5Bb64FARJ3x1B%z%Ei|`d&i=0tgXG}vx`%T z%Z6X_>V5a_`0=>raW8#)(~>W^2|K|H+W{mvj zg;(5j=A5SauYP0oU-y0d=)}x#@0p%^UDEf8YWB7c*>dQC-Oo*5d;PJqesJI6+s}Nm zee;YD&;8}4b6oDT|Ke);@g09GUHsS9 z?B&0F;qiz5aof9tezJaTMdNK9XYBjKk33DoAM*56{*(P)_Qmy6Tkd~jPetjxJ91t; z`0_6wAMm@sj+npim(wnp)9=NVMIHJ72!89elHy61H}Cv;>(s)r-@Ve;_>=I}pB(tz z=37eM$o2^s%}xoWJo$*I)m~o7UDZ-Tjrzmp-w3=#=o~-yOPWaQTS8ef6DRJbrZY;MPZO zdGM#9rHi)S^~|;7e)H6>o%O?91=n`1DF3Ko>-rI0@2`1k&$ll8({I0ffAX`T?6N<2 z{ val{8, 13, 21, 34, 55}; // TODO: 调用 `std::transform`,将 `v` 中的每个元素乘以 2,并转换为字符串,存入 `ans` + std::vector ans(val.size()); + std::transform(val.begin(), val.end(), ans.begin(),[](int x){ + x *= 2; + std::string str = std::to_string(x); + return str; + } + ); + // std::vector ans ASSERT(ans.size() == val.size(), "ans size should be equal to val size"); ASSERT(ans[0] == "16", "ans[0] should be 16"); diff --git a/exercises/33_std_accumulate/main b/exercises/33_std_accumulate/main new file mode 100755 index 0000000000000000000000000000000000000000..fe36141f7f2a7ba7d113482628aced2897109d2d GIT binary patch literal 40200 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 * sizeof(DataType) ; ASSERT(size == 602112, "4x1x3x224x224 = 602112"); return 0; }