{"id":678,"date":"2020-03-20T20:11:19","date_gmt":"2020-03-20T12:11:19","guid":{"rendered":"http:\/\/kylelv.com\/?p=678"},"modified":"2020-03-20T20:11:19","modified_gmt":"2020-03-20T12:11:19","slug":"%e4%b8%89%e7%bb%b4%e6%95%b0%e7%bb%84%e6%a8%a1%e6%9d%bf%e7%b1%bb","status":"publish","type":"post","link":"https:\/\/blog.kylelv.com\/?p=678","title":{"rendered":"\u4e09\u7ef4\u6570\u7ec4\u6a21\u677f\u7c7b"},"content":{"rendered":"\n<h2 class=\"has-text-align-center wp-block-heading\">C:\u5f88\u96be\u8499\u6df7\u8fc7\u5173\u7684CArray3d\u4e09\u7ef4\u6570\u7ec4\u6a21\u677f\u7c7b<\/h2>\n\n\n\n<p class=\"has-text-align-center\">\u603b\u65f6\u95f4\u9650\u5236:\u00a01000ms\u00a0\u5185\u5b58\u9650\u5236:\u00a065536kB<\/p>\n\n\n\n<p class=\"has-text-align-left\">\u63cf\u8ff0<\/p>\n\n\n\n<p>\u5b9e\u73b0\u4e00\u4e2a\u4e09\u7ef4\u6570\u7ec4\u6a21\u7248CArray3D\uff0c\u53ef\u4ee5\u7528\u6765\u751f\u6210\u5143\u7d20\u4e3a\u4efb\u610f\u7c7b\u578b\u53d8\u91cf\u7684\u4e09\u7ef4\u6570\u7ec4\uff0c\u8f93\u51fa\u6307\u5b9a\u7ed3\u679c<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">#include &lt;iostream&gt;\n#include &lt;iomanip&gt; \n#include &lt;cstring&gt;\nusing namespace std;\ntemplate &lt;class T&gt;\nclass CArray3D\n{<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">\/\/ \u5728\u6b64\u5904\u8865\u5145\u4f60\u7684\u4ee3\u7801<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">};\n\nCArray3D&lt;int&gt; a(3,4,5);\nCArray3D&lt;double&gt; b(3,2,2);\nvoid PrintA()\n{\n\tfor(int i = 0;i &lt; 3; ++i) {\n\t\tcout &lt;&lt; \"layer \" &lt;&lt; i &lt;&lt; \":\" &lt;&lt; endl;\n\t\tfor(int j = 0; j &lt; 4; ++j) {\n\t\t\tfor(int k = 0; k &lt; 5; ++k) \n\t\t\t\tcout &lt;&lt; a[i][j][k] &lt;&lt; \",\" ;\n\t\t\tcout &lt;&lt; endl;\n\t\t}\n\t}\n}\nvoid PrintB()\n{\n\tfor(int i = 0;i &lt; 3; ++i) {\n\t\tcout &lt;&lt; \"layer \" &lt;&lt; i &lt;&lt; \":\" &lt;&lt; endl;\n\t\tfor(int j = 0; j &lt; 2; ++j) {\n\t\t\tfor(int k = 0; k &lt; 2; ++k) \n\t\t\t\tcout &lt;&lt; b[i][j][k] &lt;&lt; \",\" ;\n\t\t\tcout &lt;&lt; endl;\n\t\t}\n\t}\n}\n\nint main()\n{\n\n\tint No = 0;\n\tfor( int i = 0; i &lt; 3; ++ i ) {\n\t\ta[i];\n\t\tfor( int j = 0; j &lt; 4; ++j ) {\n\t\t\ta[j][i];\n\t\t\tfor( int k = 0; k &lt; 5; ++k )\n\t\t\t\ta[i][j][k] = No ++;\n\t\t\ta[j][i][i];\t\n\t\t}\n\t}\n\tPrintA();\n\tmemset(a[1],-1 ,20*sizeof(int));\t\n\tmemset(a[1],-1 ,20*sizeof(int));\n\tPrintA(); \n\tmemset(a[1][1],0 ,5*sizeof(int));\t\n\tPrintA();\n\n\tfor( int i = 0; i &lt; 3; ++ i )\n\t\tfor( int j = 0; j &lt; 2; ++j )\n\t\t\tfor( int k = 0; k &lt; 2; ++k )\n\t\t\t\tb[i][j][k] = 10.0\/(i+j+k+1);\n\tPrintB();\n\tint n = a[0][1][2];\n\tdouble f = b[0][1][1];\n\tcout &lt;&lt; \"****\" &lt;&lt; endl;\n\tcout &lt;&lt; n &lt;&lt; \",\" &lt;&lt; f &lt;&lt; endl;\n\t\t\n\treturn 0;\n}<\/pre>\n\n\n\n<p>\u8f93\u5165<\/p>\n\n\n\n<p>\u65e0<\/p>\n\n\n\n<p>\u8f93\u51fa<\/p>\n\n\n\n<p>\u7b49\u540c\u4e8e\u6837\u4f8b<\/p>\n\n\n\n<p>\u6837\u4f8b\u8f93\u5165<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\u65e0<\/pre>\n\n\n\n<p>\u6837\u4f8b\u8f93\u51fa<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">layer 0:\n0,1,2,3,4,\n5,6,7,8,9,\n10,11,12,13,14,\n15,16,17,18,19,\nlayer 1:\n20,21,22,23,24,\n25,26,27,28,29,\n30,31,32,33,34,\n35,36,37,38,39,\nlayer 2:\n40,41,42,43,44,\n45,46,47,48,49,\n50,51,52,53,54,\n55,56,57,58,59,\nlayer 0:\n0,1,2,3,4,\n5,6,7,8,9,\n10,11,12,13,14,\n15,16,17,18,19,\nlayer 1:\n-1,-1,-1,-1,-1,\n-1,-1,-1,-1,-1,\n-1,-1,-1,-1,-1,\n-1,-1,-1,-1,-1,\nlayer 2:\n40,41,42,43,44,\n45,46,47,48,49,\n50,51,52,53,54,\n55,56,57,58,59,\nlayer 0:\n0,1,2,3,4,\n5,6,7,8,9,\n10,11,12,13,14,\n15,16,17,18,19,\nlayer 1:\n-1,-1,-1,-1,-1,\n0,0,0,0,0,\n-1,-1,-1,-1,-1,\n-1,-1,-1,-1,-1,\nlayer 2:\n40,41,42,43,44,\n45,46,47,48,49,\n50,51,52,53,54,\n55,56,57,58,59,\nlayer 0:\n10,5,\n5,3.33333,\nlayer 1:\n5,3.33333,\n3.33333,2.5,\nlayer 2:\n3.33333,2.5,\n2.5,2,\n****\n7,3.33333\n<\/pre>\n\n\n\n<p>\u63d0\u793a\u5efa\u8bae\u505a\u6cd5\uff1a<br>1. a[i][j][k] \u8fd9\u4e2a\u8868\u8fbe\u5f0f\u7684\u7b2c\u4e00\u4e2a[]\u8fd4\u56de\u4e00\u4e2a\u5185\u90e8\u7c7b\u7684\u5bf9\u8c61\uff0c\u8be5\u5185\u90e8\u7c7b\u4e5f\u91cd\u8f7d\u4e86[],\u4e14\u8fd4\u56de\u503c\u4e3a\u6307\u9488\u3002<br>2. \u5fc5\u8981\u65f6\u9700\u91cd\u8f7d\u5bf9\u8c61\u5230\u6307\u9488\u7684\u5f3a\u5236\u7c7b\u578b\u8f6c\u6362\u8fd0\u7b97\u7b26<\/p>\n\n\n\n<p>\u6765\u6e90Guo Wei<\/p>\n\n\n\n<p>\u4e3b\u8981\u95ee\u9898\u5728\u4e8e\u9700\u8981\u5185\u5b58\u8fde\u7eed\u4e14\u591a\u91cd\u3010\u3011\u8bbf\u95ee<br>\u6240\u4ee5\u6211\u4eec\u5728class\u91cc\u5185\u5efa\u7c7b\uff0c\u5e76\u65b0\u5efa\u4e00\u7ef4\u6570\u7ec4<\/p>\n\n\n\n<p>\u6ce8\u610f\u91cd\u5b9a\u4e49\u4e00\u4e0b\u7c7b\u578b\u8f6c\u6362\u51fd\u6570T* (memset\u7528)<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#include &lt;iostream>\n#include &lt;iomanip> \n#include &lt;cstring>\n#include&lt;string>\n#include&lt;cstdio>\n#include&lt;algorithm>\nusing namespace std;\ntemplate &lt;class T>\nclass CArray3D\n{\n    class CArray2D{\n        T *p;\n        int b,c;\n    public:\n        CArray2D(){p=new T&#91;1];}\n        ~CArray2D(){\n            delete &#91;] p;\n        }\n        void INIT(int _b,int _c){\n            b=_b;c=_c;\n            delete &#91;] p;\n            p=new T&#91;b*c+1];\n        }\n        T* operator &#91;](int x){\n            return p+c*x;\n        }\n        operator T*(){\n            return p;\n        }\n    };\npublic:\n    CArray2D *p;\n    CArray3D(int a,int b,int c){\n        p=new CArray2D&#91;a];\n        for(int i=0;i&lt;a;++i) p&#91;i].INIT(b,c);\n    }\n    ~CArray3D(){\n        delete &#91;] p;\n    }\n    CArray2D&amp; operator &#91;](int x){\n        return p&#91;x];\n    }\n\/\/ \u5728\u6b64\u5904\u8865\u5145\u4f60\u7684\u4ee3\u7801\n};\n\nCArray3D&lt;int> a(3,4,5);\nCArray3D&lt;double> b(3,2,2);\nvoid PrintA()\n{\n\tfor(int i = 0;i &lt; 3; ++i) {\n\t\tcout &lt;&lt; \"layer \" &lt;&lt; i &lt;&lt; \":\" &lt;&lt; endl;\n\t\tfor(int j = 0; j &lt; 4; ++j) {\n\t\t\tfor(int k = 0; k &lt; 5; ++k) \n\t\t\t\tcout &lt;&lt; a&#91;i]&#91;j]&#91;k] &lt;&lt; \",\" ;\n\t\t\tcout &lt;&lt; endl;\n\t\t}\n\t}\n}\nvoid PrintB()\n{\n\tfor(int i = 0;i &lt; 3; ++i) {\n\t\tcout &lt;&lt; \"layer \" &lt;&lt; i &lt;&lt; \":\" &lt;&lt; endl;\n\t\tfor(int j = 0; j &lt; 2; ++j) {\n\t\t\tfor(int k = 0; k &lt; 2; ++k) \n\t\t\t\tcout &lt;&lt; b&#91;i]&#91;j]&#91;k] &lt;&lt; \",\" ;\n\t\t\tcout &lt;&lt; endl;\n\t\t}\n\t}\n}\n\nint main()\n{\n\n\tint No = 0;\n\tfor( int i = 0; i &lt; 3; ++ i ) {\n\t\ta&#91;i];\n\t\tfor( int j = 0; j &lt; 4; ++j ) {\n\t\t\ta&#91;j]&#91;i];\n\t\t\tfor( int k = 0; k &lt; 5; ++k )\n\t\t\t\ta&#91;i]&#91;j]&#91;k] = No ++;\n\t\t\ta&#91;j]&#91;i]&#91;i];\t\n\t\t}\n\t}\n\tPrintA();\n\tmemset(a&#91;1],-1 ,20*sizeof(int));\t\n\tmemset(a&#91;1],-1 ,20*sizeof(int));\n\tPrintA(); \n\tmemset(a&#91;1]&#91;1],0 ,5*sizeof(int));\t\n\tPrintA();\n\n\tfor( int i = 0; i &lt; 3; ++ i )\n\t\tfor( int j = 0; j &lt; 2; ++j )\n\t\t\tfor( int k = 0; k &lt; 2; ++k )\n\t\t\t\tb&#91;i]&#91;j]&#91;k] = 10.0\/(i+j+k+1);\n\tPrintB();\n\tint n = a&#91;0]&#91;1]&#91;2];\n\tdouble f = b&#91;0]&#91;1]&#91;1];\n\tcout &lt;&lt; \"****\" &lt;&lt; endl;\n\tcout &lt;&lt; n &lt;&lt; \",\" &lt;&lt; f &lt;&lt; endl;\n\t\t\n\treturn 0;\n}\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>C:\u5f88\u96be\u8499\u6df7\u8fc7\u5173\u7684CArray3d\u4e09\u7ef4\u6570\u7ec4\u6a21\u677f\u7c7b \u603b\u65f6\u95f4\u9650\u5236:\u00a01000ms\u00a0\u5185\u5b58\u9650\u5236:\u00a065536kB \u63cf\u8ff0 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[70],"tags":[],"class_list":["post-678","post","type-post","status-publish","format-standard","hentry","category-70"],"_links":{"self":[{"href":"https:\/\/blog.kylelv.com\/index.php?rest_route=\/wp\/v2\/posts\/678","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.kylelv.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.kylelv.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.kylelv.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.kylelv.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=678"}],"version-history":[{"count":1,"href":"https:\/\/blog.kylelv.com\/index.php?rest_route=\/wp\/v2\/posts\/678\/revisions"}],"predecessor-version":[{"id":679,"href":"https:\/\/blog.kylelv.com\/index.php?rest_route=\/wp\/v2\/posts\/678\/revisions\/679"}],"wp:attachment":[{"href":"https:\/\/blog.kylelv.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=678"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.kylelv.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=678"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.kylelv.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=678"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}