{"id":1155,"date":"2018-04-25T14:34:56","date_gmt":"2018-04-25T06:34:56","guid":{"rendered":"https:\/\/damogame.cn:15443\/wordpress\/?p=1155"},"modified":"2018-04-25T14:34:56","modified_gmt":"2018-04-25T06:34:56","slug":"c11%e5%b8%b8%e7%94%a8%e7%89%b9%e6%80%a7%e7%9a%84%e4%bd%bf%e7%94%a8%e7%bb%8f%e9%aa%8c%e6%80%bb%e7%bb%93","status":"publish","type":"post","link":"https:\/\/i007.cc\/wordpress\/archives\/1155","title":{"rendered":"C++11\u5e38\u7528\u7279\u6027\u7684\u4f7f\u7528\u7ecf\u9a8c\u603b\u7ed3"},"content":{"rendered":"<h2><a id=\"cb_post_title_url\" href=\"http:\/\/www.cnblogs.com\/feng-sc\/p\/5710724.html\">C++11\u5e38\u7528\u7279\u6027\u7684\u4f7f\u7528\u7ecf\u9a8c\u603b\u7ed3<\/a><\/h2>\n<div class=\"postbody\">\n<div id=\"cnblogs_post_body\" class=\"blogpost-body\">\n<div>\n<h1>\u6982\u8ff0\u53ca\u76ee\u5f55\uff08\u539f\u521b\u535a\u5ba2\uff0c\u7248\u6743\u6240\u6709\uff0c\u8f6c\u8f7d\u8bf7\u6ce8\u660e\u51fa\u5904\u00a0http:\/\/www.cnblogs.com\/feng-sc\uff09<\/h1>\n<p>C++11\u5df2\u7ecf\u51fa\u6765\u5f88\u4e45\u4e86\uff0c\u7f51\u4e0a\u4e5f\u65e9\u6709\u5f88\u591a\u4f18\u79c0\u7684C++11\u65b0\u7279\u6027\u7684\u603b\u7ed3\u6587\u7ae0\uff0c\u5728\u7f16\u5199\u672c\u535a\u5ba2\u4e4b\u524d\uff0c\u535a\u4e3b\u5728\u5de5\u4f5c\u548c\u5b66\u4e60\u4e2d\u5b66\u5230\u7684\u5173\u4e8eC++11\u65b9\u9762\u7684\u77e5\u8bc6\uff0c\u4e5f\u5f97\u76ca\u4e8e\u5f88\u591a\u5176\u4ed6\u7f51\u53cb\u7684\u603b\u7ed3\u3002\u672c\u535a\u5ba2\u6587\u7ae0\u662f\u5728\u5b66\u4e60\u7684\u57fa\u7840\u4e0a\uff0c\u52a0\u4e0a\u535a\u4e3b\u5728\u65e5\u5e38\u5de5\u4f5c\u4e2d\u7684\u4f7f\u7528C++11\u7684\u4e00\u4e9b\u603b\u7ed3\u3001\u7ecf\u9a8c\u548c\u611f\u609f\uff0c\u6574\u7406\u51fa\u6765\uff0c\u5206\u4eab\u7ed9\u5927\u5bb6\uff0c\u5e0c\u671b\u5bf9\u5404\u4f4d\u8bfb\u8005\u6709\u5e2e\u52a9\uff0c\u6587\u7ae0\u4e2d\u7684\u603b\u7ed3\u53ef\u80fd\u5b58\u5728\u5f88\u591a\u4e0d\u5b8c\u6574\u6216\u6709\u9519\u8bef\u7684\u5730\u65b9\uff0c\u4e5f\u5e0c\u671b\u8bfb\u8005\u6307\u51fa\u3002\u5927\u5bb6\u53ef\u4ee5\u6839\u636e\u5982\u4e0b\u76ee\u5f55\u8df3\u5230\u81ea\u5df1\u9700\u8981\u7684\u7ae0\u8282\u3002<\/p>\n<p><a href=\"https:\/\/www.cnblogs.com\/feng-sc\/p\/5710724.html#title1\">1\u3001\u5173\u952e\u5b57\u53ca\u65b0\u8bed\u6cd5<\/a><\/p>\n<p><a href=\"https:\/\/www.cnblogs.com\/feng-sc\/p\/5710724.html#title11\">1.1\u3001auto\u5173\u952e\u5b57\u53ca\u7528\u6cd5<\/a><\/p>\n<p><a href=\"https:\/\/www.cnblogs.com\/feng-sc\/p\/5710724.html#title12\">1.2\u3001nullptr\u5173\u952e\u5b57\u53ca\u7528\u6cd5<\/a><\/p>\n<p><a href=\"https:\/\/www.cnblogs.com\/feng-sc\/p\/5710724.html#title13\">1.3\u3001for\u5faa\u73af\u8bed\u6cd5<\/a><\/p>\n<p><a href=\"https:\/\/www.cnblogs.com\/feng-sc\/p\/5710724.html#title2\">2\u3001STL\u5bb9\u5668<\/a><\/p>\n<p><a href=\"https:\/\/www.cnblogs.com\/feng-sc\/p\/5710724.html#title21\">2.1\u3001std::array<\/a><\/p>\n<p><a href=\"https:\/\/www.cnblogs.com\/feng-sc\/p\/5710724.html#title22\">2.2\u3001std::forward_list<\/a><\/p>\n<p><a href=\"https:\/\/www.cnblogs.com\/feng-sc\/p\/5710724.html#title23\">2.3\u3001std::unordered_map<\/a><\/p>\n<p><a href=\"https:\/\/www.cnblogs.com\/feng-sc\/p\/5710724.html#title24\">2.4\u3001std::unordered_set<\/a><\/p>\n<p><a href=\"https:\/\/www.cnblogs.com\/feng-sc\/p\/5710724.html#title3\">3\u3001\u591a\u7ebf\u7a0b<\/a><\/p>\n<p><a href=\"https:\/\/www.cnblogs.com\/feng-sc\/p\/5710724.html#title31\">3.1\u3001std::thread<\/a><\/p>\n<p><a href=\"https:\/\/www.cnblogs.com\/feng-sc\/p\/5710724.html#title32\">3.2\u3001st::atomic<\/a><\/p>\n<p><a href=\"https:\/\/www.cnblogs.com\/feng-sc\/p\/5710724.html#title33\">3.3\u3001std::condition_variable<\/a><\/p>\n<p><a href=\"https:\/\/www.cnblogs.com\/feng-sc\/p\/5710724.html#title4\">4\u3001\u667a\u80fd\u6307\u9488\u5185\u5b58\u7ba1\u7406<\/a><\/p>\n<p><a href=\"https:\/\/www.cnblogs.com\/feng-sc\/p\/5710724.html#title41\">4.1\u3001std::shared_ptr<\/a><\/p>\n<p><a href=\"https:\/\/www.cnblogs.com\/feng-sc\/p\/5710724.html#title42\">4.2\u3001std::weak_ptr<\/a><\/p>\n<p><a href=\"https:\/\/www.cnblogs.com\/feng-sc\/p\/5710724.html#title5\">5\u3001\u5176\u4ed6<\/a><\/p>\n<p><a href=\"https:\/\/www.cnblogs.com\/feng-sc\/p\/5710724.html#title51\">5.1\u3001std::function\u3001std::bind\u5c01\u88c5\u53ef\u6267\u884c\u5bf9\u8c61<\/a><\/p>\n<p><a href=\"https:\/\/www.cnblogs.com\/feng-sc\/p\/5710724.html#title52\">5.2\u3001lamda\u8868\u8fbe\u5f0f<\/a><\/p>\n<h1 id=\"title1\">1\u3001\u5173\u952e\u5b57\u53ca\u65b0\u8bed\u6cd5<\/h1>\n<p>C++11\u76f8\u6bd4C++98\u589e\u52a0\u4e86\u8bb8\u591a\u5173\u952e\u5b57\u53ca\u65b0\u7684\u8bed\u6cd5\u7279\u6027\uff0c\u5f88\u591a\u4eba\u89c9\u5f97\u8fd9\u4e9b\u8bed\u6cd5\u53ef\u6709\u53ef\u65e0\uff0c\u6ca1\u6709\u65b0\u7279\u6027\u4e5f\u53ef\u4ee5\u7528\u4f20\u7edfC++\u53bb\u5b9e\u73b0\u3002<\/p>\n<p>\u4e5f\u8bb8\u5427\uff0c\u4f46\u4e2a\u4eba\u5bf9\u5f85\u65b0\u6280\u672f\u603b\u662f\u62b1\u7740\u6e34\u671b\u800c\u70ed\u8877\u7684\u6001\u5ea6\u5bf9\u5f85\uff0c\u4e5f\u8bb8\u6b63\u5982\u5f88\u591a\u4eba\u6240\u60f3\uff0c\u7528\u4f20\u7edf\u8bed\u6cd5\u4e5f\u53ef\u4ee5\u5b9e\u73b0\uff0c\u4f46\u65b0\u6280\u672f\u53ef\u4ee5\u8ba9\u4f60\u7684\u8bbe\u8ba1\u66f4\u5b8c\u7f8e\u3002\u8fd9\u5c31\u5982\u540c\u5728\u539f\u6765\u7684\u7ef4\u5ea6\u91cc\uff0c\u4f60\u8981\u5b8c\u6210\u4e00\u4ef6\u4e8b\u60c5\uff0c\u9700\u8981\u5f88\u591a\u4e2a\u590d\u6742\u7684\u6b65\u9aa4\uff0c\u4f46\u5728\u65b0\u8bed\u6cd5\u7279\u6027\u91cc\uff0c\u4f60\u53ef\u4ee5\u4ece\u53e6\u5916\u7684\u7ef4\u5ea6\uff0c\u5f88\u5e72\u8106\uff0c\u76f4\u63a5\u5c31\u628a\u539f\u6765\u5f88\u590d\u6742\u7684\u95ee\u9898\u7528\u5f88\u7b80\u5355\u7684\u65b9\u6cd5\u89e3\u51b3\u4e86\uff0c\u6211\u60f3\u7740\u5c31\u662f\u65b0\u7684\u6280\u672f\u5e26\u6765\u7684\u4e00\u4e9b\u7f16\u7a0b\u4f53\u9a8c\u4e0a\u975e\u5e38\u597d\u7684\u611f\u89c9\u3002\u5927\u5bb6\u4e5f\u4e0d\u8981\u89c9\u5f97\u4ee3\u7801\u5199\u5f97\u8d8a\u590d\u6742\u5c31\u5148\u663e\u5f97\u8d8a\u725bB\uff0c\u6709\u65f6\u5019\u5728\u7406\u89e3\u7684\u57fa\u7840\u4e0a\uff0c\u5c3d\u91cf\u9009\u62e9\u201c\u7ad9\u5728\u5de8\u4eba\u7684\u80a9\u8180\u4e0a\u201d\uff0c\u53ef\u80fd\u4f60\u4f1a\u7ad9\u5f97\u66f4\u9ad8\uff0c\u4e5f\u770b\u5f97\u66f4\u8fdc\u3002<\/p>\n<p>\u672c\u7ae0\u91cd\u70b9\u603b\u7ed3\u4e00\u4e9b\u5e38\u7528c++11\u65b0\u8bed\u6cd5\u7279\u70b9\u3002\u540e\u7eed\u4f1a\u5728\u672c\u4eba\u7406\u89e3\u7684\u57fa\u7840\u4e0a\uff0c\u4f1a\u7ee7\u7eed\u5728\u672c\u535a\u5ba2\u5185\u66f4\u65b0\u6216\u589e\u52a0\u65b0\u7684\u5c0f\u7ae0\u8282\u3002<\/p>\n<h2 id=\"title11\">1.1\u3001auto\u5173\u952e\u5b57\u53ca\u7528\u6cd5<\/h2>\n<p><strong>\u3000\u3000A\u3001auto\u5173\u952e\u5b57\u80fd\u505a\u4ec0\u4e48\uff1f<\/strong><\/p>\n<p>auto\u5e76\u6ca1\u6709\u8ba9C++\u6210\u4e3a\u5f31\u7c7b\u578b\u8bed\u8a00\uff0c\u4e5f\u6ca1\u6709\u5f31\u5316\u53d8\u91cf\u4ec0\u4e48\uff0c\u53ea\u662f\u4f7f\u7528auto\u7684\u65f6\u5019\uff0c\u7f16\u8bd1\u5668\u6839\u636e\u4e0a\u4e0b\u6587\u60c5\u51b5\uff0c\u786e\u5b9aauto\u53d8\u91cf\u7684\u771f\u6b63\u7c7b\u578b\u3002<\/p>\n<div class=\"cnblogs_code\">\n<div class=\"cnblogs_code_toolbar\"><span class=\"cnblogs_code_copy\"><a title=\"\u590d\u5236\u4ee3\u7801\"><img decoding=\"async\" src=\"https:\/\/common.cnblogs.com\/images\/copycode.gif\" alt=\"\u590d\u5236\u4ee3\u7801\" \/><\/a><\/span><\/div>\n<pre>\/\/\u793a\u4f8b\u4ee3\u78011.0 http:\/\/www.cnblogs.com\/feng-sc\/p\/5710724.html\r\nauto AddTest(int a, int b) \r\n{\r\n    return a + b;\r\n}\r\n\r\nint main()\r\n{\r\n    auto index = 10;\r\n    auto str = \"abc\";\r\n    auto ret = AddTest(1,2);\r\n    std::cout &lt;&lt; \"index:\" &lt;&lt; index &lt;&lt; std::endl;\r\n    std::cout &lt;&lt; \"str:\" &lt;&lt; str &lt;&lt; std::endl;\r\n    std::cout &lt;&lt; \"res:\" &lt;&lt; ret &lt;&lt; std::endl;\r\n}<\/pre>\n<div class=\"cnblogs_code_toolbar\"><span class=\"cnblogs_code_copy\"><a title=\"\u590d\u5236\u4ee3\u7801\"><img decoding=\"async\" src=\"https:\/\/common.cnblogs.com\/images\/copycode.gif\" alt=\"\u590d\u5236\u4ee3\u7801\" \/><\/a><\/span><\/div>\n<\/div>\n<p>\u662f\u7684\uff0c\u4f60\u6ca1\u770b\u9519\uff0c\u4ee3\u7801\u4e5f\u6ca1\u9519\uff0cauto\u5728C++14\u4e2d\u53ef\u4ee5\u4f5c\u4e3a\u51fd\u6570\u7684\u8fd4\u56de\u503c\uff0c\u56e0\u6b64auto AddTest(int a, int b)\u7684\u5b9a\u4e49\u662f\u6ca1\u95ee\u9898\u7684\u3002<\/p>\n<p><strong>\u3000\u3000\u8fd0\u884c\u7ed3\u679c\uff1a<\/strong><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/images2015.cnblogs.com\/blog\/821158\/201607\/821158-20160727215255294-399150098.png\" alt=\"\" \/><\/p>\n<p><strong>\u3000\u3000B\u3001auto\u4e0d\u80fd\u505a\u4ec0\u4e48\uff1f<\/strong><\/p>\n<p>auto\u4f5c\u4e3a\u51fd\u6570\u8fd4\u56de\u503c\u65f6\uff0c\u53ea\u80fd\u7528\u4e8e\u5b9a\u4e49\u51fd\u6570\uff0c\u4e0d\u80fd\u7528\u4e8e\u58f0\u660e\u51fd\u6570\u3002<\/p>\n<div class=\"cnblogs_code\">\n<div class=\"cnblogs_code_toolbar\"><span class=\"cnblogs_code_copy\"><a title=\"\u590d\u5236\u4ee3\u7801\"><img decoding=\"async\" src=\"https:\/\/common.cnblogs.com\/images\/copycode.gif\" alt=\"\u590d\u5236\u4ee3\u7801\" \/><\/a><\/span><\/div>\n<pre>\/\/Test.h \u793a\u4f8b\u4ee3\u78011.0 http:\/\/www.cnblogs.com\/feng-sc\/p\/5710724.html\r\n#pragma once\r\nclass Test\r\n{\r\npublic:\r\n    auto TestWork(int a ,int b);\r\n};<\/pre>\n<div class=\"cnblogs_code_toolbar\"><span class=\"cnblogs_code_copy\"><a title=\"\u590d\u5236\u4ee3\u7801\"><img decoding=\"async\" src=\"https:\/\/common.cnblogs.com\/images\/copycode.gif\" alt=\"\u590d\u5236\u4ee3\u7801\" \/><\/a><\/span><\/div>\n<\/div>\n<p>\u5982\u4e0b\u51fd\u6570\u4e2d\uff0c\u5728\u5f15\u7528\u5934\u6587\u4ef6\u7684\u8c03\u7528TestWork\u51fd\u6570\u662f\uff0c\u7f16\u8bd1\u65e0\u6cd5\u901a\u8fc7\u3002<\/p>\n<p>\u4f46\u5982\u679c\u628a\u5b9e\u73b0\u5199\u5728\u5934\u6587\u4ef6\u4e2d\uff0c\u53ef\u4ee5\u7f16\u8bd1\u901a\u8fc7\uff0c\u56e0\u4e3a\u7f16\u8bd1\u5668\u53ef\u4ee5\u6839\u636e\u51fd\u6570\u5b9e\u73b0\u7684\u8fd4\u56de\u503c\u786e\u5b9aauto\u7684\u771f\u5b9e\u7c7b\u578b\u3002\u5982\u679c\u8bfb\u8005\u7528\u8fc7inline\u7c7b\u6210\u5458\u51fd\u6570\uff0c\u8fd9\u4e2a\u5e94\u8be5\u5f88\u5bb9\u6613\u660e\u767d\uff0c\u6b64\u7279\u6027\u4e0einline\u7c7b\u6210\u5458\u51fd\u6570\u7c7b\u4f3c\u3002<\/p>\n<div class=\"cnblogs_code\">\n<div class=\"cnblogs_code_toolbar\"><span class=\"cnblogs_code_copy\"><a title=\"\u590d\u5236\u4ee3\u7801\"><img decoding=\"async\" src=\"https:\/\/common.cnblogs.com\/images\/copycode.gif\" alt=\"\u590d\u5236\u4ee3\u7801\" \/><\/a><\/span><\/div>\n<pre>\/\/Test.h \u793a\u4f8b\u4ee3\u78011.0 http:\/\/www.cnblogs.com\/feng-sc\/p\/5710724.html\r\n#pragma once\r\nclass Test\r\n{\r\npublic:\r\n    auto TestWork(int a, int b)\r\n    {\r\n        return a + b;\r\n    }\r\n};<\/pre>\n<div class=\"cnblogs_code_toolbar\"><span class=\"cnblogs_code_copy\"><a title=\"\u590d\u5236\u4ee3\u7801\"><img decoding=\"async\" src=\"https:\/\/common.cnblogs.com\/images\/copycode.gif\" alt=\"\u590d\u5236\u4ee3\u7801\" \/><\/a><\/span><\/div>\n<\/div>\n<p>&nbsp;<\/p>\n<h2 id=\"title12\">1.2\u3001nullptr\u5173\u952e\u5b57\u53ca\u7528\u6cd5<\/h2>\n<p><strong>\u3000\u4e3a\u4ec0\u4e48\u9700\u8981nullptr? NULL\u6709\u4ec0\u4e48\u6bdb\u75c5\uff1f<\/strong><\/p>\n<p>\u6211\u4eec\u901a\u8fc7\u4e0b\u9762\u4e00\u4e2a\u5c0f\u5c0f\u7684\u4f8b\u5b50\u6765\u53d1\u73b0NULL\u7684\u4e00\u70b9\u95ee\u9898\uff1a<\/p>\n<div class=\"cnblogs_code\">\n<div class=\"cnblogs_code_toolbar\"><span class=\"cnblogs_code_copy\"><a title=\"\u590d\u5236\u4ee3\u7801\"><img decoding=\"async\" src=\"https:\/\/common.cnblogs.com\/images\/copycode.gif\" alt=\"\u590d\u5236\u4ee3\u7801\" \/><\/a><\/span><\/div>\n<pre>\/\/\u793a\u4f8b\u4ee3\u78011.0 http:\/\/www.cnblogs.com\/feng-sc\/p\/5710724.html\r\nclass Test\r\n{\r\npublic:\r\n    void TestWork(int index)\r\n    {\r\n        std::cout &lt;&lt; \"TestWork 1\" &lt;&lt; std::endl;\r\n    }\r\n    void TestWork(int * index)\r\n    {\r\n        std::cout &lt;&lt; \"TestWork 2\" &lt;&lt; std::endl;\r\n    }\r\n};\r\n\r\nint main()\r\n{\r\n    Test test;\r\n    test.TestWork(NULL);\r\n    test.TestWork(nullptr);\r\n}<\/pre>\n<div class=\"cnblogs_code_toolbar\"><span class=\"cnblogs_code_copy\"><a title=\"\u590d\u5236\u4ee3\u7801\"><img decoding=\"async\" src=\"https:\/\/common.cnblogs.com\/images\/copycode.gif\" alt=\"\u590d\u5236\u4ee3\u7801\" \/><\/a><\/span><\/div>\n<\/div>\n<p><strong>\u3000\u3000\u8fd0\u884c\u7ed3\u679c\uff1a<\/strong><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/images2015.cnblogs.com\/blog\/821158\/201607\/821158-20160727223408356-60845739.png\" alt=\"\" \/><\/p>\n<p>NULL\u5728c++\u91cc\u8868\u793a\u7a7a\u6307\u9488\uff0c\u770b\u5230\u95ee\u9898\u4e86\u5427\uff0c\u6211\u4eec\u8c03\u7528test.TestWork(NULL)\uff0c\u5176\u5b9e\u671f\u671b\u662f\u8c03\u7528\u7684\u662fvoid TestWork(int * index)\uff0c\u4f46\u7ed3\u679c\u8c03\u7528\u4e86void TestWork(int index)\u3002\u4f46\u4f7f\u7528nullptr\u7684\u65f6\u5019\uff0c\u6211\u4eec\u80fd\u8c03\u7528\u5230\u6b63\u786e\u7684\u51fd\u6570\u3002<\/p>\n<p>&nbsp;<\/p>\n<h2 id=\"title13\">1.3\u3001for\u5faa\u73af\u8bed\u6cd5<\/h2>\n<p>\u4e60\u60efC#\u6216java\u7684\u540c\u4e8b\u4e4b\u524d\u4f7f\u7528C++\u7684\u65f6\u5019\u66fe\u5410\u69fdC++ for\u5faa\u73af\u6ca1\u6709\u60f3C#\u90a3\u6837foreach\u7684\u7528\u6cd5\uff0c\u662f\u7684\uff0c\u5728C++11\u4e4b\u524d\uff0c\u6807\u51c6C++\u662f\u65e0\u6cd5\u505a\u5230\u7684\u3002\u719f\u6089boost\u5e93\u8bfb\u8005\u53ef\u80fd\u77e5\u9053boost\u91cc\u9762\u6709foreach\u7684\u5b8f\u5b9a\u4e49BOOST_FOREACH\uff0c\u4f46\u4e2a\u4eba\u89c9\u5f97\u770b\u8d77\u5e76\u4e0d\u662f\u90a3\u4e48\u7f8e\u89c2\u3002<\/p>\n<p>OK\uff0c\u6211\u4eec\u76f4\u63a5\u4ee5\u7b80\u5355\u793a\u4f8b\u770b\u770b\u7528\u6cd5\u5427\u3002<\/p>\n<div class=\"cnblogs_code\">\n<div class=\"cnblogs_code_toolbar\"><span class=\"cnblogs_code_copy\"><a title=\"\u590d\u5236\u4ee3\u7801\"><img decoding=\"async\" src=\"https:\/\/common.cnblogs.com\/images\/copycode.gif\" alt=\"\u590d\u5236\u4ee3\u7801\" \/><\/a><\/span><\/div>\n<pre>\/\/\u793a\u4f8b\u4ee3\u78011.0 http:\/\/www.cnblogs.com\/feng-sc\/p\/5710724.html\r\nint main()\r\n{\r\n    int numbers[] = { 1,2,3,4,5 };\r\n    std::cout &lt;&lt; \"numbers:\" &lt;&lt; std::endl;\r\n    for (auto number : numbers)\r\n    {\r\n        std::cout &lt;&lt; number &lt;&lt; std::endl;\r\n    }\r\n}<\/pre>\n<div class=\"cnblogs_code_toolbar\"><span class=\"cnblogs_code_copy\"><a title=\"\u590d\u5236\u4ee3\u7801\"><img decoding=\"async\" src=\"https:\/\/common.cnblogs.com\/images\/copycode.gif\" alt=\"\u590d\u5236\u4ee3\u7801\" \/><\/a><\/span><\/div>\n<\/div>\n<p>\u4ee5\u4e0a\u7528\u6cd5\u4e0d\u4ec5\u4ec5\u5c40\u9650\u4e8e\u6570\u636e\uff0cSTL\u5bb9\u5668\u90fd\u540c\u6837\u9002\u7528\u3002<\/p>\n<p>&nbsp;<\/p>\n<h1 id=\"title2\">2\u3001STL\u5bb9\u5668<\/h1>\n<p>C++11\u5728STL\u5bb9\u5668\u65b9\u9762\u4e5f\u6709\u6240\u589e\u52a0\uff0c\u7ed9\u4eba\u7684\u611f\u89c9\u5c31\u662f\u8d8a\u6765\u8d8a\u5b8c\u6574\uff0c\u8d8a\u6765\u8d8a\u4e30\u5bcc\u7684\u611f\u89c9\uff0c\u53ef\u4ee5\u8ba9\u6211\u4eec\u5728\u4e0d\u540c\u573a\u666f\u4e0b\u80fd\u9009\u62e9\u8ddf\u5177\u5408\u9002\u7684\u5bb9\u5668\uff0c\u63d0\u9ad8\u6211\u4eec\u7684\u6548\u7387\u3002<\/p>\n<p>\u672c\u7ae0\u8282\u603b\u7ed3C++11\u65b0\u589e\u7684\u4e00\u4e9b\u5bb9\u5668\uff0c\u4ee5\u53ca\u5bf9\u5176\u5b9e\u73b0\u505a\u4e00\u4e9b\u7b80\u5355\u7684\u89e3\u91ca\u3002<\/p>\n<h2 id=\"title21\">2.1\u3001std::array<\/h2>\n<p>\u4e2a\u4eba\u89c9\u5f97std::array\u8ddf\u6570\u7ec4\u5e76\u6ca1\u6709\u592a\u5927\u533a\u522b\uff0c\u5bf9\u4e8e\u591a\u7ef4\u6570\u636e\u4f7f\u7528std::array\uff0c\u4e2a\u4eba\u53cd\u800c\u6709\u4e9b\u4e0d\u662f\u5f88\u4e60\u60ef\u5427\u3002<\/p>\n<p>std::array\u76f8\u5bf9\u4e8e\u6570\u7ec4\uff0c\u589e\u52a0\u4e86\u8fed\u4ee3\u5668\u7b49\u51fd\u6570\uff08\u63a5\u53e3\u5b9a\u4e49\u53ef\u53c2\u8003C++\u5b98\u65b9\u6587\u6863\uff09\u3002<\/p>\n<div class=\"cnblogs_code\">\n<div class=\"cnblogs_code_toolbar\"><span class=\"cnblogs_code_copy\"><a title=\"\u590d\u5236\u4ee3\u7801\"><img decoding=\"async\" src=\"https:\/\/common.cnblogs.com\/images\/copycode.gif\" alt=\"\u590d\u5236\u4ee3\u7801\" \/><\/a><\/span><\/div>\n<pre>\/\/\u793a\u4f8b\u4ee3\u78011.0 http:\/\/www.cnblogs.com\/feng-sc\/p\/5710724.html\r\n#include &lt;array&gt;\r\nint main()\r\n{\r\n    std::array&lt;int, 4&gt; arrayDemo = { 1,2,3,4 };\r\n    std::cout &lt;&lt; \"arrayDemo:\" &lt;&lt; std::endl;\r\n    for (auto itor : arrayDemo)\r\n    {\r\n        std::cout &lt;&lt; itor &lt;&lt; std::endl;\r\n    }\r\n    int arrayDemoSize = sizeof(arrayDemo);\r\n    std::cout &lt;&lt; \"arrayDemo size:\" &lt;&lt; arrayDemoSize &lt;&lt; std::endl;\r\n    return 0;\r\n}<\/pre>\n<div class=\"cnblogs_code_toolbar\"><span class=\"cnblogs_code_copy\"><a title=\"\u590d\u5236\u4ee3\u7801\"><img decoding=\"async\" src=\"https:\/\/common.cnblogs.com\/images\/copycode.gif\" alt=\"\u590d\u5236\u4ee3\u7801\" \/><\/a><\/span><\/div>\n<\/div>\n<p><strong>\u3000\u3000\u8fd0\u884c\u7ed3\u679c\uff1a<\/strong><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/images2015.cnblogs.com\/blog\/821158\/201607\/821158-20160727233612106-824105333.png\" alt=\"\" \/><\/p>\n<p>\u6253\u5370\u51fa\u6765\u7684size\u548c\u76f4\u63a5\u4f7f\u7528\u6570\u7ec4\u5b9a\u4e49\u7ed3\u679c\u662f\u4e00\u6837\u7684\u3002<\/p>\n<p>&nbsp;<\/p>\n<h2 id=\"title22\">2.2\u3001std::forward_list<\/h2>\n<p><span class=\"namespace\" title=\"namespace std\">\u3000\u3000std::forward_list\u4e3a\u4ece++\u65b0\u589e\u7684\u7ebf\u6027\u8868\uff0c\u4e0elist\u533a\u522b\u5728\u4e8e\u5b83\u662f\u5355\u5411\u94fe\u8868\u3002\u6211\u4eec\u5728\u5b66\u4e60\u6570\u636e\u7ed3\u6784\u7684\u65f6\u5019\u90fd\u77e5\u9053\uff0c\u94fe\u8868\u5728\u5bf9\u6570\u636e\u8fdb\u884c\u63d2\u5165\u548c\u5220\u9664\u662f\u6bd4\u987a\u5e8f\u5b58\u50a8\u7684\u7ebf\u6027\u8868\u6709\u4f18\u52bf\uff0c\u56e0\u6b64\u5728\u63d2\u5165\u548c\u5220\u9664\u64cd\u4f5c\u9891\u7e41\u7684\u5e94\u7528\u573a\u666f\u4e2d\uff0c\u4f7f\u7528list\u548cforward_list\u6bd4\u4f7f\u7528array\u3001vector\u548cdeque\u6548\u7387\u8981\u9ad8\u5f88\u591a\u3002<\/span><\/p>\n<div class=\"cnblogs_code\">\n<div class=\"cnblogs_code_toolbar\"><span class=\"cnblogs_code_copy\"><a title=\"\u590d\u5236\u4ee3\u7801\"><img decoding=\"async\" src=\"https:\/\/common.cnblogs.com\/images\/copycode.gif\" alt=\"\u590d\u5236\u4ee3\u7801\" \/><\/a><\/span><\/div>\n<pre>\/\/\u793a\u4f8b\u4ee3\u78011.0 http:\/\/www.cnblogs.com\/feng-sc\/p\/5710724.html\r\n#include &lt;forward_list&gt;\r\nint main()\r\n{\r\n    std::forward_list&lt;int&gt; numbers = {1,2,3,4,5,4,4};\r\n    std::cout &lt;&lt; \"numbers:\" &lt;&lt; std::endl;\r\n    for (auto number : numbers)\r\n    {\r\n        std::cout &lt;&lt; number &lt;&lt; std::endl;\r\n    }\r\n    numbers.remove(4);\r\n    std::cout &lt;&lt; \"numbers after remove:\" &lt;&lt; std::endl;\r\n    for (auto number : numbers)\r\n    {\r\n        std::cout &lt;&lt; number &lt;&lt; std::endl;\r\n    }\r\n    return 0;\r\n}<\/pre>\n<div class=\"cnblogs_code_toolbar\"><span class=\"cnblogs_code_copy\"><a title=\"\u590d\u5236\u4ee3\u7801\"><img decoding=\"async\" src=\"https:\/\/common.cnblogs.com\/images\/copycode.gif\" alt=\"\u590d\u5236\u4ee3\u7801\" \/><\/a><\/span><\/div>\n<\/div>\n<p><strong>\u3000\u3000\u8fd0\u884c\u7ed3\u679c\uff1a<\/strong><\/p>\n<p><strong>\u3000 \u00a0\u3000<img decoding=\"async\" src=\"https:\/\/images2015.cnblogs.com\/blog\/821158\/201607\/821158-20160727235803450-388695102.png\" alt=\"\" \/><\/strong><\/p>\n<h2 id=\"title23\">2.3\u3001std::unordered_map<\/h2>\n<p>std::unordered_map\u4e0estd::map\u7528\u6cd5\u57fa\u672c\u5dee\u4e0d\u591a\uff0c\u4f46STL\u5728\u5185\u90e8\u5b9e\u73b0\u4e0a\u6709\u5f88\u5927\u4e0d\u540c\uff0cstd::map\u4f7f\u7528\u7684\u6570\u636e\u7ed3\u6784\u4e3a\u4e8c\u53c9\u6811\uff0c\u800cstd::unordered_map\u5185\u90e8\u662f\u54c8\u5e0c\u8868\u7684\u5b9e\u73b0\u65b9\u5f0f\uff0c\u54c8\u5e0cmap\u7406\u8bba\u4e0a\u67e5\u627e\u6548\u7387\u4e3aO(1)\u3002\u4f46\u5728\u5b58\u50a8\u6548\u7387\u4e0a\uff0c\u54c8\u5e0cmap\u9700\u8981\u589e\u52a0\u54c8\u5e0c\u8868\u7684\u5185\u5b58\u5f00\u9500\u3002<\/p>\n<p>\u4e0b\u9762\u4ee3\u7801\u4e3aC++\u5b98\u7f51\u5b9e\u4f8b\u6e90\u7801\u5b9e\u4f8b\uff1a<\/p>\n<div class=\"cnblogs_code\">\n<div class=\"cnblogs_code_toolbar\"><span class=\"cnblogs_code_copy\"><a title=\"\u590d\u5236\u4ee3\u7801\"><img decoding=\"async\" src=\"https:\/\/common.cnblogs.com\/images\/copycode.gif\" alt=\"\u590d\u5236\u4ee3\u7801\" \/><\/a><\/span><\/div>\n<pre>\/\/webset address: http:\/\/www.cplusplus.com\/reference\/unordered_map\/unordered_map\/bucket_count\/\r\n#include &lt;iostream&gt;\r\n#include &lt;string&gt;\r\n#include &lt;unordered_map&gt;\r\nint main()\r\n{\r\n    std::unordered_map&lt;std::string, std::string&gt; mymap =\r\n    {\r\n        { \"house\",\"maison\" },\r\n        { \"apple\",\"pomme\" },\r\n        { \"tree\",\"arbre\" },\r\n        { \"book\",\"livre\" },\r\n        { \"door\",\"porte\" },\r\n        { \"grapefruit\",\"pamplemousse\" }\r\n    };\r\n    unsigned n = mymap.bucket_count();\r\n    std::cout &lt;&lt; \"mymap has \" &lt;&lt; n &lt;&lt; \" buckets.\\n\";\r\n    for (unsigned i = 0; i&lt;n; ++i) \r\n    {\r\n        std::cout &lt;&lt; \"bucket #\" &lt;&lt; i &lt;&lt; \" contains: \";\r\n        for (auto it = mymap.begin(i); it != mymap.end(i); ++it)\r\n            std::cout &lt;&lt; \"[\" &lt;&lt; it-&gt;first &lt;&lt; \":\" &lt;&lt; it-&gt;second &lt;&lt; \"] \";\r\n        std::cout &lt;&lt; \"\\n\";\r\n    }\r\n    return 0;\r\n}<\/pre>\n<div class=\"cnblogs_code_toolbar\"><span class=\"cnblogs_code_copy\"><a title=\"\u590d\u5236\u4ee3\u7801\"><img decoding=\"async\" src=\"https:\/\/common.cnblogs.com\/images\/copycode.gif\" alt=\"\u590d\u5236\u4ee3\u7801\" \/><\/a><\/span><\/div>\n<\/div>\n<p><strong>\u3000\u3000\u8fd0\u884c\u7ed3\u679c\uff1a<\/strong><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/images2015.cnblogs.com\/blog\/821158\/201607\/821158-20160728130449325-848275337.jpg\" alt=\"\" \/><\/p>\n<p>\u8fd0\u884c\u7ed3\u679c\u4e0e\u5b98\u7f51\u7ed9\u51fa\u7684\u7ed3\u679c\u4e0d\u4e00\u6837\u3002\u5b9e\u9a8c\u8bc1\u660e\uff0c\u4e0d\u540c\u7f16\u8bd1\u5668\u7f16\u8bd1\u51fa\u6765\u7684\u7ed3\u679c\u4e0d\u4e00\u6837\uff0c\u5982\u4e0b\u4e3alinux\u4e0bgcc 4.6.3\u7248\u672c\u7f16\u8bd1\u51fa\u6765\u7684\u7ed3\u679c\u3002\u6216\u8bb8\u662f\u56e0\u4e3a\u4f7f\u7528\u7684\u54c8\u5e0c\u7b97\u6cd5\u4e0d\u4e00\u6837\uff0c\u4e2a\u4eba\u6ca1\u6709\u6df1\u7a76\u6b64\u95ee\u9898\u3002<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/images2015.cnblogs.com\/blog\/821158\/201607\/821158-20160728131805372-1747634440.jpg\" alt=\"\" \/><\/p>\n<h2 id=\"title24\">2.4\u3001std::unordered_set<\/h2>\n<p>std::unordered_set\u7684\u6570\u636e\u5b58\u50a8\u7ed3\u6784\u4e5f\u662f\u54c8\u5e0c\u8868\u7684\u65b9\u5f0f\u7ed3\u6784\uff0c\u9664\u6b64\u4e4b\u5916\uff0cstd::unordered_set\u5728\u63d2\u5165\u65f6\u4e0d\u4f1a\u81ea\u52a8\u6392\u5e8f\uff0c\u8fd9\u90fd\u662fstd::set\u8868\u73b0\u4e0d\u540c\u7684\u5730\u65b9\u3002<\/p>\n<p>\u6211\u4eec\u6765\u6d4b\u8bd5\u4e00\u4e0b\u4e0b\u9762\u7684\u4ee3\u7801\uff1a<\/p>\n<div class=\"cnblogs_code\">\n<div class=\"cnblogs_code_toolbar\"><span class=\"cnblogs_code_copy\"><a title=\"\u590d\u5236\u4ee3\u7801\"><img decoding=\"async\" src=\"https:\/\/common.cnblogs.com\/images\/copycode.gif\" alt=\"\u590d\u5236\u4ee3\u7801\" \/><\/a><\/span><\/div>\n<pre>\/\/\u793a\u4f8b\u4ee3\u78011.0 http:\/\/www.cnblogs.com\/feng-sc\/p\/5710724.html\r\n#include &lt;iostream&gt;\r\n#include &lt;string&gt;\r\n#include &lt;unordered_set&gt;\r\n#include &lt;set&gt;\r\nint main()\r\n{\r\n    std::unordered_set&lt;int&gt; unorder_set;\r\n    unorder_set.insert(7);\r\n    unorder_set.insert(5);\r\n    unorder_set.insert(3);\r\n    unorder_set.insert(4);\r\n    unorder_set.insert(6);\r\n    std::cout &lt;&lt; \"unorder_set:\" &lt;&lt; std::endl;\r\n    for (auto itor : unorder_set)\r\n    {\r\n        std::cout &lt;&lt; itor &lt;&lt; std::endl;\r\n    }\r\n\r\n    std::set&lt;int&gt; set;\r\n    set.insert(7);\r\n    set.insert(5);\r\n    set.insert(3);\r\n    set.insert(4);\r\n    set.insert(6);\r\n    std::cout &lt;&lt; \"set:\" &lt;&lt; std::endl;\r\n    for (auto itor : set)\r\n    {\r\n        std::cout &lt;&lt; itor &lt;&lt; std::endl;\r\n    }\r\n}<\/pre>\n<div class=\"cnblogs_code_toolbar\"><span class=\"cnblogs_code_copy\"><a title=\"\u590d\u5236\u4ee3\u7801\"><img decoding=\"async\" src=\"https:\/\/common.cnblogs.com\/images\/copycode.gif\" alt=\"\u590d\u5236\u4ee3\u7801\" \/><\/a><\/span><\/div>\n<\/div>\n<p><strong>\u3000\u3000\u8fd0\u884c\u7ed3\u679c\uff1a<\/strong><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/images2015.cnblogs.com\/blog\/821158\/201607\/821158-20160728133751231-587743503.jpg\" alt=\"\" \/><\/p>\n<h1 id=\"title3\">3\u3001\u591a\u7ebf\u7a0b<\/h1>\n<p>\u5728C++11\u4ee5\u524d\uff0cC++\u7684\u591a\u7ebf\u7a0b\u7f16\u7a0b\u5747\u9700\u4f9d\u8d56\u7cfb\u7edf\u6216\u7b2c\u4e09\u65b9\u63a5\u53e3\u5b9e\u73b0\uff0c\u4e00\u5b9a\u7a0b\u5ea6\u4e0a\u5f71\u54cd\u4e86\u4ee3\u7801\u7684\u79fb\u690d\u6027\u3002C++11\u4e2d\uff0c\u5f15\u5165\u4e86boost\u5e93\u4e2d\u7684\u591a\u7ebf\u7a0b\u90e8\u5206\u5185\u5bb9\uff0c\u5f62\u6210C++\u6807\u51c6\uff0c\u5f62\u6210\u6807\u51c6\u540e\u7684boost\u591a\u7ebf\u7a0b\u7f16\u7a0b\u90e8\u5206\u63a5\u53e3\u57fa\u672c\u6ca1\u6709\u53d8\u5316\uff0c\u8fd9\u6837\u65b9\u4fbf\u4e86\u4ee5\u524d\u4f7f\u7528boost\u63a5\u53e3\u5f00\u53d1\u7684\u4f7f\u7528\u8005\u5207\u6362\u4f7f\u7528C++\u6807\u51c6\u63a5\u53e3\uff0c\u628a\u5bb9\u6613\u628aboost\u63a5\u53e3\u5347\u7ea7\u4e3aC++\u63a5\u53e3\u3002<\/p>\n<p>\u6211\u4eec\u901a\u8fc7\u5982\u4e0b\u51e0\u90e8\u5206\u4ecb\u7ecdC++11\u591a\u7ebf\u7a0b\u65b9\u9762\u7684\u63a5\u53e3\u53ca\u4f7f\u7528\u65b9\u6cd5\u3002<\/p>\n<h2 id=\"title31\">3.1\u3001std::thread<\/h2>\n<p>std::thread\u4e3aC++11\u7684\u7ebf\u7a0b\u7c7b\uff0c\u4f7f\u7528\u65b9\u6cd5\u548cboost\u63a5\u53e3\u4e00\u6837\uff0c\u975e\u5e38\u65b9\u4fbf\uff0c\u540c\u65f6\uff0cC++11\u7684std::thread\u89e3\u51b3\u4e86boost::thread\u4e2d\u6784\u6210\u53c2\u6570\u9650\u5236\u7684\u95ee\u9898\uff0c\u6211\u60f3\u7740\u90fd\u662f\u5f97\u76ca\u4e8eC++11\u7684\u53ef\u53d8\u53c2\u6570\u7684\u8bbe\u8ba1\u98ce\u683c\u3002<\/p>\n<p>\u6211\u4eec\u901a\u8fc7\u5982\u4e0b\u4ee3\u7801\u719f\u6089\u4e0bstd::thread\u4f7f\u7528\u98ce\u683c\u3002<\/p>\n<div class=\"cnblogs_code\">\n<div class=\"cnblogs_code_toolbar\"><span class=\"cnblogs_code_copy\"><a title=\"\u590d\u5236\u4ee3\u7801\"><img decoding=\"async\" src=\"https:\/\/common.cnblogs.com\/images\/copycode.gif\" alt=\"\u590d\u5236\u4ee3\u7801\" \/><\/a><\/span><\/div>\n<pre>\/\/\u793a\u4f8b\u4ee3\u78011.0 http:\/\/www.cnblogs.com\/feng-sc\/p\/5710724.html\r\n#include &lt;thread&gt;\r\nvoid threadfun1()\r\n{\r\n    std::cout &lt;&lt; \"threadfun1 - 1\\r\\n\" &lt;&lt; std::endl;\r\n    std::this_thread::sleep_for(std::chrono::seconds(1));\r\n    std::cout &lt;&lt; \"threadfun1 - 2\" &lt;&lt; std::endl;\r\n}\r\n\r\nvoid threadfun2(int iParam, std::string sParam)\r\n{\r\n    std::cout &lt;&lt; \"threadfun2 - 1\" &lt;&lt; std::endl;\r\n    std::this_thread::sleep_for(std::chrono::seconds(5));\r\n    std::cout &lt;&lt; \"threadfun2 - 2\" &lt;&lt; std::endl;\r\n}\r\n\r\nint main()\r\n{\r\n    std::thread t1(threadfun1);\r\n    std::thread t2(threadfun2, 10, \"abc\");\r\n    t1.join();\r\n    std::cout &lt;&lt; \"join\" &lt;&lt; std::endl;\r\n    t2.detach();\r\n    std::cout &lt;&lt; \"detach\" &lt;&lt; std::endl;\r\n}<\/pre>\n<div class=\"cnblogs_code_toolbar\"><span class=\"cnblogs_code_copy\"><a title=\"\u590d\u5236\u4ee3\u7801\"><img decoding=\"async\" src=\"https:\/\/common.cnblogs.com\/images\/copycode.gif\" alt=\"\u590d\u5236\u4ee3\u7801\" \/><\/a><\/span><\/div>\n<\/div>\n<p><strong>\u3000\u3000\u8fd0\u884c\u7ed3\u679c\uff1a<\/strong><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/images2015.cnblogs.com\/blog\/821158\/201607\/821158-20160728202454653-1250964845.png\" alt=\"\" \/><\/p>\n<p>\u6709\u4ee5\u4e0a\u8f93\u51fa\u7ed3\u679c\u53ef\u4ee5\u5f97\u77e5\uff0ct1.join()\u4f1a\u7b49\u5f85t1\u7ebf\u7a0b\u9000\u51fa\u540e\u624d\u7ee7\u7eed\u5f80\u4e0b\u6267\u884c\uff0ct2.detach()\u5e76\u4e0d\u4f1a\u5e76\u4e0d\u4f1a\u628a\uff0cdetach\u5b57\u7b26\u8f93\u51fa\u540e\uff0c\u4e3b\u51fd\u6570\u9000\u51fa\uff0cthreadfun2\u8fd8\u672a\u6267\u884c\u5b8c\u6210\uff0c\u4f46\u662f\u5728\u4e3b\u7ebf\u7a0b\u9000\u51fa\u540e\uff0ct2\u7684\u7ebf\u7a0b\u4e5f\u88ab\u5df2\u7ecf\u88ab\u5f3a\u9000\u51fa\u3002<\/p>\n<p>&nbsp;<\/p>\n<h2 id=\"title32\">3.2\u3001std::atomic<\/h2>\n<p>std::atomic\u4e3aC++11\u5206\u88c5\u7684\u539f\u5b50\u6570\u636e\u7c7b\u578b\u3002<\/p>\n<p>\u4ec0\u4e48\u662f\u539f\u5b50\u6570\u636e\u7c7b\u578b\uff1f<\/p>\n<p>\u4ece\u529f\u80fd\u4e0a\u770b\uff0c\u7b80\u5355\u5730\u8bf4\uff0c\u539f\u5b50\u6570\u636e\u7c7b\u578b\u4e0d\u4f1a\u53d1\u751f\u6570\u636e\u7ade\u4e89\uff0c\u80fd\u76f4\u63a5\u7528\u5728\u591a\u7ebf\u7a0b\u4e2d\u800c\u4e0d\u5fc5\u6211\u4eec\u7528\u6237\u5bf9\u5176\u8fdb\u884c\u6dfb\u52a0\u4e92\u65a5\u8d44\u6e90\u9501\u7684\u7c7b\u578b\u3002\u4ece\u5b9e\u73b0\u4e0a\uff0c\u5927\u5bb6\u53ef\u4ee5\u7406\u89e3\u4e3a\u8fd9\u4e9b\u539f\u5b50\u7c7b\u578b\u5185\u90e8\u81ea\u5df1\u52a0\u4e86\u9501\u3002<\/p>\n<p>\u6211\u4eec\u4e0b\u9762\u901a\u8fc7\u4e00\u4e2a\u6d4b\u8bd5\u4f8b\u5b50\u8bf4\u660e\u539f\u5b50\u7c7b\u578bstd::atomic_int\u7684\u7279\u70b9\u3002<\/p>\n<p>\u4e0b\u9762\u4f8b\u5b50\u4e2d\uff0c\u6211\u4eec\u4f7f\u752810\u4e2a\u7ebf\u7a0b\uff0c\u628astd::atomic_int\u7c7b\u578b\u7684\u53d8\u91cfiCount\u4ece100\u51cf\u52301\u3002<\/p>\n<div class=\"cnblogs_code\">\n<div class=\"cnblogs_code_toolbar\"><span class=\"cnblogs_code_copy\"><a title=\"\u590d\u5236\u4ee3\u7801\"><img decoding=\"async\" src=\"https:\/\/common.cnblogs.com\/images\/copycode.gif\" alt=\"\u590d\u5236\u4ee3\u7801\" \/><\/a><\/span><\/div>\n<pre>\/\/\u793a\u4f8b\u4ee3\u78011.0 http:\/\/www.cnblogs.com\/feng-sc\/p\/5710724.html\r\n#include &lt;thread&gt;\r\n#include &lt;atomic&gt;\r\n#include &lt;stdio.h&gt;\r\nstd::atomic_bool bIsReady = false;\r\nstd::atomic_int iCount = 100;\r\nvoid threadfun1()\r\n{\r\n    if (!bIsReady) {\r\n        std::this_thread::yield();\r\n    }\r\n    while (iCount &gt; 0)\r\n    {\r\n        printf(\"iCount:%d\\r\\n\", iCount--);\r\n    }\r\n}\r\n\r\nint main()\r\n{\r\n    std::atomic_bool b;\r\n    std::list&lt;std::thread&gt; lstThread;\r\n    for (int i = 0; i &lt; 10; ++i)\r\n    {\r\n        lstThread.push_back(std::thread(threadfun1));\r\n    }\r\n    for (auto&amp; th : lstThread)\r\n    {\r\n        th.join();\r\n    }\r\n}<\/pre>\n<div class=\"cnblogs_code_toolbar\"><span class=\"cnblogs_code_copy\"><a title=\"\u590d\u5236\u4ee3\u7801\"><img decoding=\"async\" src=\"https:\/\/common.cnblogs.com\/images\/copycode.gif\" alt=\"\u590d\u5236\u4ee3\u7801\" \/><\/a><\/span><\/div>\n<\/div>\n<p><strong>\u3000\u3000\u8fd0\u884c\u7ed3\u679c\uff1a<\/strong><\/p>\n<p><strong>\u3000\u3000<img decoding=\"async\" src=\"https:\/\/images2015.cnblogs.com\/blog\/821158\/201607\/821158-20160728212818575-961639547.png\" alt=\"\" \/><\/strong><\/p>\n<p>\u6ce8\uff1a\u5c4f\u5e55\u592a\u77ed\u7684\u539f\u56e0\uff0c\u4e0a\u9762\u7ed3\u679c\u6ca1\u6709\u622a\u5b8c\u5c4f<\/p>\n<p>\u4ece\u4e0a\u9762\u7684\u7ed3\u679c\u53ef\u4ee5\u770b\u5230\uff0ciCount\u7684\u6700\u5c0f\u7ed3\u679c\u90fd\u662f1\uff0c\u5355\u53ef\u80fd\u4e0d\u662f\u6700\u540e\u4e00\u6b21\u6253\u5370\uff0c\u6ca1\u6709\u5c0f\u4e8e\u7b49\u4e8e0\u7684\u60c5\u51b5\uff0c\u5927\u5bb6\u53ef\u4ee5\u4ee3\u7801\u590d\u5236\u4e0b\u6765\u591a\u8fd0\u884c\u51e0\u904d\u5bf9\u6bd4\u770b\u770b\u3002<\/p>\n<p>&nbsp;<\/p>\n<h2 id=\"title33\">3.3\u3001std::condition_variable<\/h2>\n<p>C++11\u4e2d\u7684std::condition_variable\u5c31\u50cfLinux\u4e0b\u4f7f\u7528pthread_cond_wait\u548cpthread_cond_signal\u4e00\u6837\uff0c\u53ef\u4ee5\u8ba9\u7ebf\u7a0b\u4f11\u7720\uff0c\u76f4\u5230\u522b\u5524\u9192\uff0c\u73b0\u5728\u5728\u4ece\u65b0\u6267\u884c\u3002\u7ebf\u7a0b\u7b49\u5f85\u5728\u591a\u7ebf\u7a0b\u7f16\u7a0b\u4e2d\u4f7f\u7528\u975e\u5e38\u9891\u7e41\uff0c\u7ecf\u5e38\u9700\u8981\u7b49\u5f85\u4e00\u4e9b\u5f02\u6b65\u6267\u884c\u7684\u6761\u4ef6\u7684\u8fd4\u56de\u7ed3\u679c\u3002<\/p>\n<p>OK\uff0c\u5728\u6b64\u4e0d\u591a\u89e3\u91ca\uff0c\u4e0b\u9762\u6211\u4eec\u901a\u8fc7C++11\u5b98\u7f51\u7684\u4f8b\u5b50\u770b\u770b\u3002<\/p>\n<div class=\"cnblogs_code\">\n<div class=\"cnblogs_code_toolbar\"><span class=\"cnblogs_code_copy\"><a title=\"\u590d\u5236\u4ee3\u7801\"><img decoding=\"async\" src=\"https:\/\/common.cnblogs.com\/images\/copycode.gif\" alt=\"\u590d\u5236\u4ee3\u7801\" \/><\/a><\/span><\/div>\n<pre> 1 \/\/ webset address: http:\/\/www.cplusplus.com\/reference\/condition_variable\/condition_variable\/%20condition_variable\r\n 2 \/\/ condition_variable example\r\n 3 #include &lt;iostream&gt;           \/\/ std::cout\r\n 4 #include &lt;thread&gt;             \/\/ std::thread\r\n 5 #include &lt;mutex&gt;              \/\/ std::mutex, std::unique_lock\r\n 6 #include &lt;condition_variable&gt; \/\/ std::condition_variable\r\n 7 \r\n 8 std::mutex mtx;\r\n 9 std::condition_variable cv;\r\n10 bool ready = false;\r\n11 \r\n12 void print_id(int id) {\r\n13     std::unique_lock&lt;std::mutex&gt; lck(mtx);\r\n14     while (!ready) cv.wait(lck);\r\n15     \/\/ ...\r\n16     std::cout &lt;&lt; \"thread \" &lt;&lt; id &lt;&lt; '\\n';\r\n17 }\r\n18 \r\n19 void go() {\r\n20     std::unique_lock&lt;std::mutex&gt; lck(mtx);\r\n21     ready = true;\r\n22     cv.notify_all();\r\n23 }\r\n24 \r\n25 int main()\r\n26 {\r\n27     std::thread threads[10];\r\n28     \/\/ spawn 10 threads:\r\n29     for (int i = 0; i&lt;10; ++i)\r\n30         threads[i] = std::thread(print_id, i);\r\n31 \r\n32     std::cout &lt;&lt; \"10 threads ready to race...\\n\";\r\n33     go();                       \/\/ go!\r\n34 \r\n35     for (auto&amp; th : threads) th.join();\r\n36 \r\n37     return 0;\r\n38 }<\/pre>\n<div class=\"cnblogs_code_toolbar\"><span class=\"cnblogs_code_copy\"><a title=\"\u590d\u5236\u4ee3\u7801\"><img decoding=\"async\" src=\"https:\/\/common.cnblogs.com\/images\/copycode.gif\" alt=\"\u590d\u5236\u4ee3\u7801\" \/><\/a><\/span><\/div>\n<\/div>\n<p><strong>\u3000\u3000\u8fd0\u884c\u7ed3\u679c\uff1a<\/strong><\/p>\n<p><strong>\u3000 \u00a0<img decoding=\"async\" src=\"https:\/\/images2015.cnblogs.com\/blog\/821158\/201607\/821158-20160728215246028-2015934325.png\" alt=\"\" \/><\/strong><\/p>\n<p>\u4e0a\u9762\u7684\u4ee3\u7801\uff0c\u572814\u884c\u4e2d\u8c03\u7528cv.wait(lck)\u7684\u65f6\u5019\uff0c\u7ebf\u7a0b\u5c06\u8fdb\u5165\u4f11\u7720\uff0c\u5728\u8c03\u752833\u884c\u7684go\u51fd\u6570\u4e4b\u524d\uff0c10\u4e2a\u7ebf\u7a0b\u90fd\u5904\u4e8e\u4f11\u7720\u72b6\u6001\uff0c\u5f5322\u884c\u7684cv.notify_all()\u8fd0\u884c\u540e\uff0c14\u884c\u7684\u4f11\u7720\u5c06\u7ed3\u675f\uff0c\u7ee7\u7eed\u5f80\u4e0b\u8fd0\u884c\uff0c\u6700\u7ec8\u8f93\u51fa\u5982\u4e0a\u7ed3\u679c\u3002<\/p>\n<p>&nbsp;<\/p>\n<h1 id=\"title4\">4\u3001\u667a\u80fd\u6307\u9488\u5185\u5b58\u7ba1\u7406<\/h1>\n<p>\u5728\u5185\u5b58\u7ba1\u7406\u65b9\u9762\uff0cC++11\u7684std::auto_ptr\u57fa\u7840\u4e0a\uff0c\u79fb\u690d\u4e86boost\u5e93\u4e2d\u7684\u667a\u80fd\u6307\u9488\u7684\u90e8\u5206\u5b9e\u73b0\uff0c\u5982std::shared_ptr\u3001std::weak_ptr\u7b49\uff0c\u5f53\u7136\uff0c\u60f3boost::thread\u4e00\u6837\uff0cC++11\u4e5f\u4fee\u590d\u4e86boost::make_shared\u4e2d\u6784\u9020\u53c2\u6570\u7684\u9650\u5236\u95ee\u9898\u3002\u628a\u667a\u80fd\u6307\u9488\u6dfb\u52a0\u4e3a\u6807\u51c6\uff0c\u4e2a\u4eba\u89c9\u5f97\u771f\u7684\u975e\u5e38\u65b9\u4fbf\uff0c\u6bd5\u7adf\u5728C++\u4e2d\uff0c\u667a\u80fd\u6307\u9488\u5728\u7f16\u7a0b\u8bbe\u8ba1\u4e2d\u4f7f\u7528\u7684\u8fd8\u662f\u975e\u5e38\u5e7f\u6cdb\u3002<\/p>\n<p>\u4ec0\u4e48\u662f\u667a\u80fd\u6307\u9488\uff1f\u7f51\u4e0a\u5df2\u7ecf\u6709\u5f88\u591a\u89e3\u91ca\uff0c\u4e2a\u4eba\u89c9\u5f97\u201c\u667a\u80fd\u6307\u9488\u201d\u8fd9\u4e2a\u540d\u8bcd\u4f3c\u4e4e\u8d77\u5f97\u8fc7\u4e8e\u201c\u9738\u6c14\u201d\uff0c\u5f88\u591a\u521d\u5b66\u8005\u770b\u5230\u8fd9\u4e2a\u540d\u8bcd\u5c31\u89c9\u5f97\u4f3c\u4e4e\u5f88\u96be\u3002<\/p>\n<p>\u7b80\u5355\u5730\u8bf4\uff0c\u667a\u80fd\u6307\u9488\u53ea\u662f\u7528\u5bf9\u8c61\u53bb\u7ba1\u7406\u4e00\u4e2a\u8d44\u6e90\u6307\u9488\uff0c\u540c\u65f6\u7528\u4e00\u4e2a\u8ba1\u6570\u5668\u8ba1\u7b97\u5f53\u524d\u6307\u9488\u5f15\u7528\u5bf9\u8c61\u7684\u4e2a\u6570\uff0c\u5f53\u7ba1\u7406\u6307\u9488\u7684\u5bf9\u8c61\u589e\u52a0\u6216\u51cf\u5c11\u65f6\uff0c\u8ba1\u6570\u5668\u4e5f\u76f8\u5e94\u52a01\u6216\u51cf1\uff0c\u5f53\u6700\u540e\u4e00\u4e2a\u6307\u9488\u7ba1\u7406\u5bf9\u8c61\u9500\u6bc1\u65f6\uff0c\u8ba1\u6570\u5668\u4e3a1\uff0c\u6b64\u65f6\u5728\u9500\u6bc1\u6307\u9488\u7ba1\u7406\u5bf9\u8c61\u7684\u540c\u65f6\uff0c\u4e5f\u628a\u6307\u9488\u7ba1\u7406\u5bf9\u8c61\u6240\u7ba1\u7406\u7684\u6307\u9488\u8fdb\u884cdelete\u64cd\u4f5c\u3002<\/p>\n<p>\u5982\u4e0b\u56fe\u6240\u793a\uff0c\u7b80\u5355\u8bdd\u4e86\u4e00\u4e0b\u6307\u9488\u3001\u667a\u80fd\u6307\u9488\u5bf9\u8c61\u548c\u8ba1\u6570\u5668\u4e4b\u95f4\u7684\u5173\u7cfb\uff1a<\/p>\n<p>&nbsp;<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/images2015.cnblogs.com\/blog\/821158\/201607\/821158-20160728224820059-1639320336.png\" alt=\"\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>\u4e0b\u9762\u7684\u5c0f\u7ae0\u8282\u4e2d\uff0c\u6211\u4eec\u5206\u522b\u4ecb\u7ecd\u5e38\u7528\u7684\u4e24\u4e2a\u667a\u80fd\u6307\u9488std::shared_ptr\u3001std::weak_ptr\u7684\u7528\u6cd5\u3002<\/p>\n<h2 id=\"title41\">4.1\u3001std::shared_ptr<\/h2>\n<p>std::shared_ptr\u5305\u88c5\u4e86new\u64cd\u4f5c\u7b26\u52a8\u6001\u5206\u522b\u7684\u5185\u5b58\uff0c\u53ef\u4ee5\u81ea\u7531\u62f7\u8d1d\u590d\u5236\uff0c\u57fa\u672c\u4e0a\u662f\u4f7f\u7528\u6700\u591a\u7684\u4e00\u4e2a\u667a\u80fd\u6307\u9488\u7c7b\u578b\u3002<\/p>\n<p>\u6211\u4eec\u901a\u8fc7\u4e0b\u9762\u4f8b\u5b50\u6765\u4e86\u89e3\u4e0bstd::shared_ptr\u7684\u7528\u6cd5:<\/p>\n<div class=\"cnblogs_code\">\n<div class=\"cnblogs_code_toolbar\"><span class=\"cnblogs_code_copy\"><a title=\"\u590d\u5236\u4ee3\u7801\"><img decoding=\"async\" src=\"https:\/\/common.cnblogs.com\/images\/copycode.gif\" alt=\"\u590d\u5236\u4ee3\u7801\" \/><\/a><\/span><\/div>\n<pre>\/\/\u793a\u4f8b\u4ee3\u78011.0 http:\/\/www.cnblogs.com\/feng-sc\/p\/5710724.html\r\n#include &lt;memory&gt;\r\nclass Test\r\n{\r\npublic:\r\n    Test()\r\n    {\r\n        std::cout &lt;&lt; \"Test()\" &lt;&lt; std::endl;\r\n    }\r\n    ~Test()\r\n    {\r\n        std::cout &lt;&lt; \"~Test()\" &lt;&lt; std::endl;\r\n    }\r\n};\r\nint main()\r\n{\r\n    std::shared_ptr&lt;Test&gt; p1 = std::make_shared&lt;Test&gt;();\r\n    std::cout &lt;&lt; \"1 ref:\" &lt;&lt; p1.use_count() &lt;&lt; std::endl;\r\n    {\r\n        std::shared_ptr&lt;Test&gt; p2 = p1;\r\n        std::cout &lt;&lt; \"2 ref:\" &lt;&lt; p1.use_count() &lt;&lt; std::endl;\r\n    }\r\n    std::cout &lt;&lt; \"3 ref:\" &lt;&lt; p1.use_count() &lt;&lt; std::endl;\r\n    return 0;\r\n}<\/pre>\n<div class=\"cnblogs_code_toolbar\"><span class=\"cnblogs_code_copy\"><a title=\"\u590d\u5236\u4ee3\u7801\"><img decoding=\"async\" src=\"https:\/\/common.cnblogs.com\/images\/copycode.gif\" alt=\"\u590d\u5236\u4ee3\u7801\" \/><\/a><\/span><\/div>\n<\/div>\n<p><strong>\u3000\u3000\u8fd0\u884c\u7ed3\u679c\uff1a<\/strong><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/images2015.cnblogs.com\/blog\/821158\/201607\/821158-20160728230144763-104226993.png\" alt=\"\" \/><\/p>\n<p><strong>\u3000\u3000\u4ece\u4e0a\u9762\u4ee3\u7801\u7684\u8fd0\u884c\u7ed3\u679c\uff0c\u9700\u8981\u8bfb\u8005\u4e86\u89e3\u7684\u662f\uff1a<\/strong><\/p>\n<p>1\u3001std::make_shared\u5c01\u88c5\u4e86new\u65b9\u6cd5\uff0cboost::make_shared\u4e4b\u524d\u7684\u539f\u5219\u662f\u65e2\u7136\u91ca\u653e\u8d44\u6e90delete\u7531\u667a\u80fd\u6307\u9488\u8d1f\u8d23\uff0c\u90a3\u4e48\u5e94\u8be5\u628anew\u5c01\u88c5\u8d77\u6765\uff0c\u5426\u5219\u4f1a\u8ba9\u4eba\u89c9\u5f97\u81ea\u5df1\u8c03\u7528\u4e86new\uff0c\u4f46\u6ca1\u6709\u8c03\u7528delete\uff0c\u4f3c\u4e4e\u4e0e\u8c01\u7533\u8bf7\uff0c\u8c01\u91ca\u653e\u7684\u539f\u5219\u4e0d\u7b26\u3002C++\u4e5f\u6cbf\u7528\u4e86\u8fd9\u4e00\u505a\u6cd5\u3002<\/p>\n<p>2\u3001\u968f\u7740\u5f15\u7528\u5bf9\u8c61\u7684\u589e\u52a0std::shared_ptr&lt;Test&gt; p2 = p1\uff0c\u6307\u9488\u7684\u5f15\u7528\u8ba1\u6570\u67091\u53d8\u4e3a2\uff0c\u5f53p2\u9000\u51fa\u4f5c\u7528\u57df\u540e\uff0cp1\u7684\u5f15\u7528\u8ba1\u6570\u53d8\u56de1\uff0c\u5f53main\u51fd\u6570\u9000\u51fa\u540e\uff0cp1\u79bb\u5f00main\u51fd\u6570\u7684\u4f5c\u7528\u57df\uff0c\u6b64\u65f6p1\u88ab\u9500\u6bc1\uff0c\u5f53p1\u9500\u6bc1\u65f6\uff0c\u68c0\u6d4b\u5230\u5f15\u7528\u8ba1\u6570\u5df2\u7ecf\u4e3a1\uff0c\u5c31\u4f1a\u5728p1\u7684\u6790\u6784\u51fd\u6570\u4e2d\u8c03\u7528delete\u4e4b\u524dstd::make_shared\u521b\u5efa\u7684\u6307\u9488\u3002<\/p>\n<h2 id=\"title42\">4.2\u3001std::weak_ptr<\/h2>\n<p>std::weak_ptr\u7f51\u4e0a\u5f88\u591a\u4eba\u8bf4\u5176\u5b9e\u662f\u4e3a\u4e86\u89e3\u51b3std::shared_ptr\u5728\u76f8\u4e92\u5f15\u7528\u7684\u60c5\u51b5\u4e0b\u51fa\u73b0\u7684\u95ee\u9898\u800c\u5b58\u5728\u7684\uff0cC++\u5b98\u7f51\u5bf9\u8fd9\u4e2a\u53ea\u80fd\u6307\u9488\u7684\u89e3\u91ca\u4e5f\u4e0d\u591a\uff0c\u90a3\u5c31\u5148\u752d\u7ba1\u90a3\u4e48\u591a\u4e86\uff0c\u8ba9\u6211\u4eec\u6682\u65f6\u5b8c\u5168\u63a5\u53d7\u8fd9\u4e2a\u89c2\u70b9\u3002<\/p>\n<p>std::weak_ptr\u6709\u4ec0\u4e48\u7279\u70b9\u5462\uff1f\u4e0estd::shared_ptr\u6700\u5927\u7684\u5dee\u522b\u662f\u5728\u8d4b\u503c\u662f\uff0c\u4e0d\u4f1a\u5f15\u8d77\u667a\u80fd\u6307\u9488\u8ba1\u6570\u589e\u52a0\u3002<\/p>\n<p><strong>\u3000\u3000\u6211\u4eec\u4e0b\u9762\u5c06\u7ee7\u7eed\u5982\u4e0b\u4e24\u70b9\uff1a<\/strong><\/p>\n<blockquote><p>\u3000\u30001\u3001std::shared_ptr\u76f8\u4e92\u5f15\u7528\u4f1a\u6709\u4ec0\u4e48\u540e\u679c\uff1b<\/p>\n<p>2\u3001std::weak_ptr\u5982\u4f55\u89e3\u51b3\u7b2c\u4e00\u70b9\u7684\u95ee\u9898\u3002<\/p><\/blockquote>\n<p><strong>\u3000\u3000A\u3001std::shared_ptr\u76f8\u4e92\u5f15\u7528\u7684\u95ee\u9898\u793a\u4f8b\uff1a<\/strong><\/p>\n<p>&nbsp;<\/p>\n<div class=\"cnblogs_code\">\n<div class=\"cnblogs_code_toolbar\"><span class=\"cnblogs_code_copy\"><a title=\"\u590d\u5236\u4ee3\u7801\"><img decoding=\"async\" src=\"https:\/\/common.cnblogs.com\/images\/copycode.gif\" alt=\"\u590d\u5236\u4ee3\u7801\" \/><\/a><\/span><\/div>\n<pre>\/\/\u793a\u4f8b\u4ee3\u78011.0 http:\/\/www.cnblogs.com\/feng-sc\/p\/5710724.html\r\n#include &lt;memory&gt;\r\nclass TestB;\r\nclass TestA\r\n{\r\npublic:\r\n    TestA()\r\n    {\r\n        std::cout &lt;&lt; \"TestA()\" &lt;&lt; std::endl;\r\n    }\r\n    void ReferTestB(std::shared_ptr&lt;TestB&gt; test_ptr)\r\n    {\r\n        m_TestB_Ptr = test_ptr;\r\n    }\r\n    ~TestA()\r\n    {\r\n        std::cout &lt;&lt; \"~TestA()\" &lt;&lt; std::endl;\r\n    }\r\nprivate:\r\n    std::shared_ptr&lt;TestB&gt; m_TestB_Ptr; \/\/TestB\u7684\u667a\u80fd\u6307\u9488\r\n}; \r\n\r\nclass TestB\r\n{\r\npublic:\r\n    TestB()\r\n    {\r\n        std::cout &lt;&lt; \"TestB()\" &lt;&lt; std::endl;\r\n    }\r\n\r\n    void ReferTestB(std::shared_ptr&lt;TestA&gt; test_ptr)\r\n    {\r\n        m_TestA_Ptr = test_ptr;\r\n    }\r\n    ~TestB()\r\n    {\r\n        std::cout &lt;&lt; \"~TestB()\" &lt;&lt; std::endl;\r\n    }\r\n    std::shared_ptr&lt;TestA&gt; m_TestA_Ptr; \/\/TestA\u7684\u667a\u80fd\u6307\u9488\r\n};\r\n\r\n\r\nint main()\r\n{\r\n    std::shared_ptr&lt;TestA&gt; ptr_a = std::make_shared&lt;TestA&gt;();\r\n    std::shared_ptr&lt;TestB&gt; ptr_b = std::make_shared&lt;TestB&gt;();\r\n    ptr_a-&gt;ReferTestB(ptr_b);\r\n    ptr_b-&gt;ReferTestB(ptr_a);\r\n    return 0;\r\n}<\/pre>\n<div class=\"cnblogs_code_toolbar\"><span class=\"cnblogs_code_copy\"><a title=\"\u590d\u5236\u4ee3\u7801\"><img decoding=\"async\" src=\"https:\/\/common.cnblogs.com\/images\/copycode.gif\" alt=\"\u590d\u5236\u4ee3\u7801\" \/><\/a><\/span><\/div>\n<\/div>\n<p><strong>\u3000\u3000\u8fd0\u884c\u7ed3\u679c\uff1a<\/strong><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/images2015.cnblogs.com\/blog\/821158\/201607\/821158-20160728232746934-1435932538.png\" alt=\"\" \/><\/p>\n<p>\u5927\u5bb6\u53ef\u4ee5\u770b\u5230\uff0c\u4e0a\u9762\u4ee3\u7801\u4e2d\uff0c\u6211\u4eec\u521b\u5efa\u4e86\u4e00\u4e2aTestA\u548c\u4e00\u4e2aTestB\u7684\u5bf9\u8c61\uff0c\u4f46\u5728\u6574\u4e2amain\u51fd\u6570\u90fd\u8fd0\u884c\u5b8c\u540e\uff0c\u90fd\u6ca1\u770b\u5230\u4e24\u4e2a\u5bf9\u8c61\u88ab\u6790\u6784\uff0c\u8fd9\u662f\u4ec0\u4e48\u95ee\u9898\u5462\uff1f<\/p>\n<p>\u539f\u6765\uff0c\u667a\u80fd\u6307\u9488ptr_a\u4e2d\u5f15\u7528\u4e86ptr_b\uff0c\u540c\u6837ptr_b\u4e2d\u4e5f\u5f15\u7528\u4e86ptr_a\uff0c\u5728main\u51fd\u6570\u9000\u51fa\u524d\uff0cptr_a\u548cptr_b\u7684\u5f15\u7528\u8ba1\u6570\u5747\u4e3a2\uff0c\u9000\u51famain\u51fd\u6570\u540e\uff0c\u5f15\u7528\u8ba1\u6570\u5747\u53d8\u4e3a1\uff0c\u4e5f\u5c31\u662f\u76f8\u4e92\u5f15\u7528\u3002<\/p>\n<p><strong>\u3000\u3000\u8fd9\u7b49\u6548\u4e8e\u8bf4\uff1a<\/strong><\/p>\n<p>ptr_a\u5bf9ptr_b\u8bf4\uff0c\u54ce\uff0c\u6211\u8bf4ptr_b\uff0c\u6211\u73b0\u5728\u7684\u6761\u4ef6\u662f\uff0c\u4f60\u5148\u91ca\u653e\u6211\uff0c\u6211\u624d\u80fd\u91ca\u653e\u4f60\uff0c\u8fd9\u662f\u5929\u751f\u7684\uff0c\u9020\u7269\u8005\u51b3\u5b9a\u7684\uff0c\u6539\u4e0d\u4e86\u3002<\/p>\n<p>ptr_b\u4e5f\u5bf9ptr_a\u8bf4\uff0c\u6211\u7684\u6761\u4ef6\u4e5f\u662f\u4e00\u6837\uff0c\u4f60\u5148\u91ca\u653e\u6211\uff0c\u6211\u624d\u80fd\u91ca\u653e\u4f60\uff0c\u600e\u4e48\u529e\uff1f<\/p>\n<p>\u662f\u5427\uff0c\u5927\u5bb6\u90fd\u6ca1\u9519\uff0c\u76f8\u4e92\u5f15\u7528\u5bfc\u81f4\u7684\u95ee\u9898\u5c31\u662f\u91ca\u653e\u6761\u4ef6\u7684\u51b2\u7a81\uff0c\u6700\u7ec8\u4e5f\u53ef\u80fd\u5bfc\u81f4\u5185\u5b58\u6cc4\u6f0f\u3002<\/p>\n<p>&nbsp;<\/p>\n<p><strong>\u3000\u3000B\u3001std::weak_ptr\u5982\u4f55\u89e3\u51b3\u76f8\u4e92\u5f15\u7528\u7684\u95ee\u9898<\/strong><\/p>\n<p>\u6211\u4eec\u5728\u4e0a\u9762\u7684\u4ee3\u7801\u57fa\u7840\u4e0a\u4f7f\u7528std::weak_ptr\u8fdb\u884c\u4fee\u6539\uff1a<\/p>\n<div class=\"cnblogs_code\">\n<div class=\"cnblogs_code_toolbar\"><span class=\"cnblogs_code_copy\"><a title=\"\u590d\u5236\u4ee3\u7801\"><img decoding=\"async\" src=\"https:\/\/common.cnblogs.com\/images\/copycode.gif\" alt=\"\u590d\u5236\u4ee3\u7801\" \/><\/a><\/span><\/div>\n<pre>\/\/\u793a\u4f8b\u4ee3\u78011.0 http:\/\/www.cnblogs.com\/feng-sc\/p\/5710724.html\r\n#include &lt;memory&gt;\r\nclass TestB;\r\nclass TestA\r\n{\r\npublic:\r\n    TestA()\r\n    {\r\n        std::cout &lt;&lt; \"TestA()\" &lt;&lt; std::endl;\r\n    }\r\n    void ReferTestB(std::shared_ptr&lt;TestB&gt; test_ptr)\r\n    {\r\n        m_TestB_Ptr = test_ptr;\r\n    }\r\n    void TestWork()\r\n    {\r\n        std::cout &lt;&lt; \"~TestA::TestWork()\" &lt;&lt; std::endl;\r\n    }\r\n    ~TestA()\r\n    {\r\n        std::cout &lt;&lt; \"~TestA()\" &lt;&lt; std::endl;\r\n    }\r\nprivate:\r\n    std::weak_ptr&lt;TestB&gt; m_TestB_Ptr;\r\n};\r\n\r\nclass TestB\r\n{\r\npublic:\r\n    TestB()\r\n    {\r\n        std::cout &lt;&lt; \"TestB()\" &lt;&lt; std::endl;\r\n    }\r\n\r\n    void ReferTestB(std::shared_ptr&lt;TestA&gt; test_ptr)\r\n    {\r\n        m_TestA_Ptr = test_ptr;\r\n    }\r\n    void TestWork()\r\n    {\r\n        std::cout &lt;&lt; \"~TestB::TestWork()\" &lt;&lt; std::endl;\r\n    }\r\n    ~TestB()\r\n    {\r\n        std::shared_ptr&lt;TestA&gt; tmp = m_TestA_Ptr.lock();\r\n        tmp-&gt;TestWork();\r\n        std::cout &lt;&lt; \"2 ref a:\" &lt;&lt; tmp.use_count() &lt;&lt; std::endl;\r\n        std::cout &lt;&lt; \"~TestB()\" &lt;&lt; std::endl;\r\n    }\r\n    std::weak_ptr&lt;TestA&gt; m_TestA_Ptr;\r\n};\r\n\r\n\r\nint main()\r\n{\r\n    std::shared_ptr&lt;TestA&gt; ptr_a = std::make_shared&lt;TestA&gt;();\r\n    std::shared_ptr&lt;TestB&gt; ptr_b = std::make_shared&lt;TestB&gt;();\r\n    ptr_a-&gt;ReferTestB(ptr_b);\r\n    ptr_b-&gt;ReferTestB(ptr_a);\r\n    std::cout &lt;&lt; \"1 ref a:\" &lt;&lt; ptr_a.use_count() &lt;&lt; std::endl;\r\n    std::cout &lt;&lt; \"1 ref b:\" &lt;&lt; ptr_a.use_count() &lt;&lt; std::endl;\r\n    return 0;\r\n}<\/pre>\n<div class=\"cnblogs_code_toolbar\"><span class=\"cnblogs_code_copy\"><a title=\"\u590d\u5236\u4ee3\u7801\"><img decoding=\"async\" src=\"https:\/\/common.cnblogs.com\/images\/copycode.gif\" alt=\"\u590d\u5236\u4ee3\u7801\" \/><\/a><\/span><\/div>\n<\/div>\n<p><strong>\u3000\u3000\u8fd0\u884c\u7ed3\u679c\uff1a<\/strong><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/images2015.cnblogs.com\/blog\/821158\/201607\/821158-20160728235900044-273554420.png\" alt=\"\" \/><\/p>\n<p><strong>\u3000\u3000\u7531\u4ee5\u4e0a\u4ee3\u7801\u8fd0\u884c\u7ed3\u679c\u6211\u4eec\u53ef\u4ee5\u770b\u5230\uff1a<\/strong><\/p>\n<p>1\u3001\u6240\u6709\u7684\u5bf9\u8c61\u6700\u540e\u90fd\u80fd\u6b63\u5e38\u91ca\u653e\uff0c\u4e0d\u4f1a\u5b58\u5728\u4e0a\u4e00\u4e2a\u4f8b\u5b50\u4e2d\u7684\u5185\u5b58\u6ca1\u6709\u91ca\u653e\u7684\u95ee\u9898\u3002<\/p>\n<p>2\u3001ptr_a \u548cptr_b\u5728main\u51fd\u6570\u4e2d\u9000\u51fa\u524d\uff0c\u5f15\u7528\u8ba1\u6570\u5747\u4e3a1\uff0c\u4e5f\u5c31\u662f\u8bf4\uff0c\u5728TestA\u548cTestB\u4e2d\u5bf9std::weak_ptr\u7684\u76f8\u4e92\u5f15\u7528\uff0c\u4e0d\u4f1a\u5bfc\u81f4\u8ba1\u6570\u7684\u589e\u52a0\u3002\u5728TestB\u6790\u6784\u51fd\u6570\u4e2d\uff0c\u8c03\u7528std::shared_ptr&lt;TestA&gt; tmp = m_TestA_Ptr.lock()\uff0c\u628astd::weak_ptr\u7c7b\u578b\u8f6c\u6362\u6210std::shared_ptr\u7c7b\u578b\uff0c\u7136\u540e\u5bf9TestA\u5bf9\u8c61\u8fdb\u884c\u8c03\u7528\u3002<\/p>\n<p>&nbsp;<\/p>\n<h1 id=\"title5\">5\u3001\u5176\u4ed6<\/h1>\n<p>\u672c\u7ae0\u8282\u4ecb\u7ecd\u7684\u5185\u5bb9\u5982\u679c\u6309\u7167\u5206\u7c7b\u6765\u770b\uff0c\u4e5f\u5c5e\u4e8e\u4ee5\u4e0a\u8bed\u6cd5\u7c7b\u522b\uff0c\u4f46\u611f\u89c9\u8fd8\u662f\u5355\u72ec\u62ff\u51fa\u6765\u603b\u7ed3\u597d\u4e9b\u3002<\/p>\n<p>\u4e0b\u9762\u5c0f\u8282\u4e3b\u8981\u4ecb\u7ecdstd::function\u3001std::bind\u548clamda\u8868\u8fbe\u5f0f\u7684\u4e00\u4e9b\u7279\u70b9\u548c\u7528\u6cd5\uff0c\u5e0c\u671b\u5bf9\u8bfb\u8005\u80fd\u6709\u6240\u5e2e\u52a9\u3002<\/p>\n<h2 id=\"title51\">5.1\u3001std::function\u3001std::bind\u5c01\u88c5\u53ef\u6267\u884c\u5bf9\u8c61<\/h2>\n<p>std::bind\u548cstd::function\u4e5f\u662f\u4eceboost\u4e2d\u79fb\u690d\u8fdb\u6765\u7684C++\u65b0\u6807\u51c6\uff0c\u8fd9\u4e24\u4e2a\u8bed\u6cd5\u4f7f\u5f97\u5c01\u88c5\u53ef\u6267\u884c\u5bf9\u8c61\u53d8\u5f97\u7b80\u5355\u800c\u6613\u7528\u3002\u6b64\u5916\uff0cstd::bind\u548cstd::function\u4e5f\u53ef\u4ee5\u7ed3\u5408\u6211\u4eec\u4e00\u4e0b\u6240\u8bf4\u7684lamda\u8868\u8fbe\u5f0f\u4e00\u8d77\u4f7f\u7528\uff0c\u4f7f\u5f97\u53ef\u6267\u884c\u5bf9\u8c61\u7684\u5199\u6cd5\u66f4\u52a0\u201c\u82b1\u4fcf\u201d\u3002<\/p>\n<p>\u6211\u4eec\u4e0b\u9762\u901a\u8fc7\u5b9e\u4f8b\u4e00\u6b65\u6b65\u4e86\u89e3std::function\u548cstd::bind\u7684\u7528\u6cd5\uff1a<\/p>\n<p>Test.h\u6587\u4ef6<\/p>\n<div class=\"cnblogs_code\">\n<div class=\"cnblogs_code_toolbar\"><span class=\"cnblogs_code_copy\"><a title=\"\u590d\u5236\u4ee3\u7801\"><img decoding=\"async\" src=\"https:\/\/common.cnblogs.com\/images\/copycode.gif\" alt=\"\u590d\u5236\u4ee3\u7801\" \/><\/a><\/span><\/div>\n<pre>\/\/Test.h \u793a\u4f8b\u4ee3\u78011.0 http:\/\/www.cnblogs.com\/feng-sc\/p\/5710724.html\r\nclass Test\r\n{\r\npublic:\r\n    void Add()\r\n    {\r\n        \r\n    }\r\n};<\/pre>\n<div class=\"cnblogs_code_toolbar\"><span class=\"cnblogs_code_copy\"><a title=\"\u590d\u5236\u4ee3\u7801\"><img decoding=\"async\" src=\"https:\/\/common.cnblogs.com\/images\/copycode.gif\" alt=\"\u590d\u5236\u4ee3\u7801\" \/><\/a><\/span><\/div>\n<\/div>\n<p>main.cpp\u6587\u4ef6<\/p>\n<div class=\"cnblogs_code\">\n<div class=\"cnblogs_code_toolbar\"><span class=\"cnblogs_code_copy\"><a title=\"\u590d\u5236\u4ee3\u7801\"><img decoding=\"async\" src=\"https:\/\/common.cnblogs.com\/images\/copycode.gif\" alt=\"\u590d\u5236\u4ee3\u7801\" \/><\/a><\/span><\/div>\n<pre>\/\/main.cpp \u793a\u4f8b\u4ee3\u78011.0 http:\/\/www.cnblogs.com\/feng-sc\/p\/5710724.html\r\n#include &lt;functional&gt;\r\n#include &lt;iostream&gt;\r\n#include \"Test.h\"\r\nint add(int a,int b)\r\n{\r\n    return a + b;\r\n}\r\n\r\nint main()\r\n{\r\n    Test test;\r\n    test.Add();\r\n    return 0;\r\n}<\/pre>\n<div class=\"cnblogs_code_toolbar\"><span class=\"cnblogs_code_copy\"><a title=\"\u590d\u5236\u4ee3\u7801\"><img decoding=\"async\" src=\"https:\/\/common.cnblogs.com\/images\/copycode.gif\" alt=\"\u590d\u5236\u4ee3\u7801\" \/><\/a><\/span><\/div>\n<\/div>\n<p><strong>\u89e3\u91ca\uff1a<\/strong><\/p>\n<p>\u4e0a\u9762\u4ee3\u7801\u4e2d\uff0c\u6211\u4eec\u5b9e\u73b0\u4e86\u4e00\u4e2aadd\u51fd\u6570\u548c\u4e00\u4e2aTest\u7c7b\uff0cTest\u7c7b\u91cc\u9762\u6709\u4e00\u4e2aTest\u51fd\u6570\u4e5f\u6709\u4e00\u4e2a\u51fd\u6570Add\u3002<\/p>\n<p>&nbsp;<\/p>\n<p>OK\uff0c\u6211\u4eec\u73b0\u5728\u6765\u8003\u8651\u4e00\u4e0b\u8fd9\u4e2a\u95ee\u9898\uff0c\u5047\u5982\u6211\u4eec\u7684\u9700\u6c42\u662f\u8ba9Test\u91cc\u9762\u7684Add\u7531\u5916\u90e8\u5b9e\u73b0\uff0c\u5982main.cpp\u91cc\u9762\u7684add\u51fd\u6570\uff0c\u6709\u4ec0\u4e48\u65b9\u6cd5\u5462\uff1f<\/p>\n<p>\u6ca1\u9519\uff0c\u6211\u4eec\u53ef\u4ee5\u7528\u51fd\u6570\u6307\u9488\u3002<\/p>\n<p>\u6211\u4eec\u4fee\u6539Test.h<\/p>\n<div class=\"cnblogs_code\">\n<div class=\"cnblogs_code_toolbar\"><span class=\"cnblogs_code_copy\"><a title=\"\u590d\u5236\u4ee3\u7801\"><img decoding=\"async\" src=\"https:\/\/common.cnblogs.com\/images\/copycode.gif\" alt=\"\u590d\u5236\u4ee3\u7801\" \/><\/a><\/span><\/div>\n<pre>\/\/\u793a\u4f8b\u4ee3\u78011.0 http:\/\/www.cnblogs.com\/feng-sc\/p\/5710724.html\r\nclass Test\r\n{\r\npublic:\r\n    typedef int(*FunType)(int, int);\r\n    void Add(FunType fun,int a,int b)\r\n    {\r\n        int sum = fun(a, b);\r\n        std::cout &lt;&lt; \"sum:\" &lt;&lt; sum &lt;&lt; std::endl;\r\n    }\r\n};<\/pre>\n<div class=\"cnblogs_code_toolbar\"><span class=\"cnblogs_code_copy\"><a title=\"\u590d\u5236\u4ee3\u7801\"><img decoding=\"async\" src=\"https:\/\/common.cnblogs.com\/images\/copycode.gif\" alt=\"\u590d\u5236\u4ee3\u7801\" \/><\/a><\/span><\/div>\n<\/div>\n<p>\u4fee\u6539main.cpp\u7684\u8c03\u7528<\/p>\n<div class=\"cnblogs_code\">\n<div class=\"cnblogs_code_toolbar\"><span class=\"cnblogs_code_copy\"><a title=\"\u590d\u5236\u4ee3\u7801\"><img decoding=\"async\" src=\"https:\/\/common.cnblogs.com\/images\/copycode.gif\" alt=\"\u590d\u5236\u4ee3\u7801\" \/><\/a><\/span><\/div>\n<pre>\/\/\u793a\u4f8b\u4ee3\u78011.0 http:\/\/www.cnblogs.com\/feng-sc\/p\/5710724.html\r\n....\r\n....\r\nTest test;\r\ntest.Add(add, 1, 2);\r\n....<\/pre>\n<div class=\"cnblogs_code_toolbar\"><span class=\"cnblogs_code_copy\"><a title=\"\u590d\u5236\u4ee3\u7801\"><img decoding=\"async\" src=\"https:\/\/common.cnblogs.com\/images\/copycode.gif\" alt=\"\u590d\u5236\u4ee3\u7801\" \/><\/a><\/span><\/div>\n<\/div>\n<p><strong>\u3000\u3000\u8fd0\u884c\u7ed3\u679c\uff1a<\/strong><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/images2015.cnblogs.com\/blog\/821158\/201607\/821158-20160730092921169-1399676881.png\" alt=\"\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>\u5230\u73b0\u5728\u4e3a\u6b62\uff0c\u5b8c\u7f8e\u4e86\u5417\uff1f\u5982\u679c\u4f60\u662fTest.h\u7684\u63d0\u4f9b\u8005\uff0c\u4f60\u89c9\u5f97\u6709\u4ec0\u4e48\u95ee\u9898\uff1f<\/p>\n<p>\u6211\u4eec\u628a\u95ee\u9898\u5347\u7ea7\uff0c\u5047\u5982add\u5b9e\u73b0\u662f\u5728\u53e6\u5916\u4e00\u4e2a\u7c7b\u5185\u90e8\uff0c\u5982\u4e0b\u4ee3\u7801\uff1a<\/p>\n<div class=\"cnblogs_code\">\n<div class=\"cnblogs_code_toolbar\"><span class=\"cnblogs_code_copy\"><a title=\"\u590d\u5236\u4ee3\u7801\"><img decoding=\"async\" src=\"https:\/\/common.cnblogs.com\/images\/copycode.gif\" alt=\"\u590d\u5236\u4ee3\u7801\" \/><\/a><\/span><\/div>\n<pre>\/\/\u793a\u4f8b\u4ee3\u78011.0 http:\/\/www.cnblogs.com\/feng-sc\/p\/5710724.html\r\nclass TestAdd\r\n{\r\npublic:\r\n    int Add(int a,int b)\r\n    {\r\n        return a + b;\r\n    }\r\n};\r\n\r\nint main()\r\n{\r\n    Test test;\r\n    \/\/test.Add(add, 1, 2);\r\n    return 0;\r\n}<\/pre>\n<div class=\"cnblogs_code_toolbar\"><span class=\"cnblogs_code_copy\"><a title=\"\u590d\u5236\u4ee3\u7801\"><img decoding=\"async\" src=\"https:\/\/common.cnblogs.com\/images\/copycode.gif\" alt=\"\u590d\u5236\u4ee3\u7801\" \/><\/a><\/span><\/div>\n<\/div>\n<p>\u5047\u5982add\u65b9\u6cd5\u5728TestAdd\u7c7b\u5185\u90e8\uff0c\u90a3\u4f60\u7684Test\u7c7b\u6ca1\u8f99\u4e86\uff0c\u56e0\u4e3aTest\u91cc\u7684Test\u51fd\u6570\u53ea\u63a5\u53d7\u51fd\u6570\u6307\u9488\u3002\u4f60\u53ef\u80fd\u8bf4\uff0c\u8fd9\u4e2a\u4e0d\u662f\u6211\u7684\u95ee\u9898\u554a\uff0c\u6211\u662f\u63a5\u53e3\u7684\u5b9a\u4e49\u8005\uff0c\u4f7f\u7528\u8005\u5e94\u8be5\u9075\u5faa\u6211\u7684\u89c4\u5219\u3002\u4f46\u5982\u679c\u73b0\u5728\u6211\u662f\u5ba2\u6237\uff0c\u6211\u4eec\u8c08\u4e00\u7b14\u751f\u610f\uff0c\u5c31\u662f\u6211\u8981\u8d2d\u4e70\u4f7f\u7528\u4f60\u7684Test\u7c7b\uff0c\u524d\u63d0\u662f\u9700\u8981\u652f\u6301\u6211\u4f20\u5165\u51fd\u6570\u6307\u9488\uff0c\u4e5f\u80fd\u4f20\u5165\u5bf9\u8c61\u51fd\u6570\uff0c\u4f60\u505a\u4e0d\u505a\u8fd9\u7b14\u751f\u610f\uff1f<\/p>\n<p>\u662f\u7684\uff0c\u4f60\u53ef\u4ee5\u9009\u62e9\u4e0d\u505a\u8fd9\u7b14\u751f\u610f\u3002\u6211\u4eec\u73b0\u5728\u518d\u5047\u8bbe\u4f60\u5df2\u7ecf\u597d\u51e0\u4e2a\u6708\u6ca1\u5403\u8089\u4e86\uff08\u522b\u8ddf\u6211\u8bf4\u4f60\u662f\u7d20\u98df\u4e3b\u4e49\u8005\uff09\uff0c\u8eab\u8fb9\u7684\u82cd\u8747\u8089\u3001\u868a\u5b50\u8089\u554a\u90fd\u4e0d\u88ab\u4f60\u5403\u5149\u4e86\uff0c\u597d\u4e0d\u5bb9\u6613\u7b49\u5230\u6709\u673a\u4f1a\u5403\u8089\uff0c\u90a3\u6709\u4ec0\u4e48\u529e\u6cd5\u5462\uff1f<\/p>\n<p>\u8fd9\u4e2a\u65f6\u5019std::function\u548cstd::bind\u5c31\u5e2e\u4e0a\u5fd9\u4e86\u3002<\/p>\n<p>\u6211\u4eec\u7ee7\u7eed\u4fee\u6539\u4ee3\u7801\uff1a<\/p>\n<p>Test.h<\/p>\n<div class=\"cnblogs_code\">\n<div class=\"cnblogs_code_toolbar\"><span class=\"cnblogs_code_copy\"><a title=\"\u590d\u5236\u4ee3\u7801\"><img decoding=\"async\" src=\"https:\/\/common.cnblogs.com\/images\/copycode.gif\" alt=\"\u590d\u5236\u4ee3\u7801\" \/><\/a><\/span><\/div>\n<pre>\/\/\u793a\u4f8b\u4ee3\u78011.0 http:\/\/www.cnblogs.com\/feng-sc\/p\/5710724.html\r\nclass Test\r\n{\r\npublic:\r\n    void Add(std::function&lt;int(int, int)&gt; fun, int a, int b)\r\n    {\r\n        int sum = fun(a, b);\r\n        std::cout &lt;&lt; \"sum:\" &lt;&lt; sum &lt;&lt; std::endl;\r\n    }\r\n};<\/pre>\n<div class=\"cnblogs_code_toolbar\"><span class=\"cnblogs_code_copy\"><a title=\"\u590d\u5236\u4ee3\u7801\"><img decoding=\"async\" src=\"https:\/\/common.cnblogs.com\/images\/copycode.gif\" alt=\"\u590d\u5236\u4ee3\u7801\" \/><\/a><\/span><\/div>\n<\/div>\n<p><strong>\u3000\u3000\u89e3\u91ca\uff1a<\/strong><\/p>\n<p>Test\u7c7b\u4e2dstd::function&lt;int(int,int)&gt;\u8868\u793astd::function\u5c01\u88c5\u7684\u53ef\u6267\u884c\u5bf9\u8c61\u8fd4\u56de\u503c\u548c\u4e24\u4e2a\u53c2\u6570\u5747\u4e3aint\u7c7b\u578b\u3002<\/p>\n<p>main.cpp<\/p>\n<div class=\"cnblogs_code\">\n<div class=\"cnblogs_code_toolbar\"><span class=\"cnblogs_code_copy\"><a title=\"\u590d\u5236\u4ee3\u7801\"><img decoding=\"async\" src=\"https:\/\/common.cnblogs.com\/images\/copycode.gif\" alt=\"\u590d\u5236\u4ee3\u7801\" \/><\/a><\/span><\/div>\n<pre>\/\/\u793a\u4f8b\u4ee3\u78011.0 http:\/\/www.cnblogs.com\/feng-sc\/p\/5710724.html\r\nint add(int a,int b)\r\n{\r\n    std::cout &lt;&lt; \"add\" &lt;&lt; std::endl;\r\n    return a + b;\r\n}\r\n\r\nclass TestAdd\r\n{\r\npublic:\r\n    int Add(int a,int b)\r\n    {\r\n        std::cout &lt;&lt; \"TestAdd::Add\" &lt;&lt; std::endl;\r\n        return a + b;\r\n    }\r\n};\r\n\r\nint main()\r\n{\r\n    Test test;\r\n    test.Add(add, 1, 2);\r\n\r\n    TestAdd testAdd;\r\n    test.Add(std::bind(&amp;TestAdd::Add, testAdd, std::placeholders::_1, std::placeholders::_2), 1, 2);\r\n    return 0;\r\n}<\/pre>\n<div class=\"cnblogs_code_toolbar\"><span class=\"cnblogs_code_copy\"><a title=\"\u590d\u5236\u4ee3\u7801\"><img decoding=\"async\" src=\"https:\/\/common.cnblogs.com\/images\/copycode.gif\" alt=\"\u590d\u5236\u4ee3\u7801\" \/><\/a><\/span><\/div>\n<\/div>\n<p><strong>\u3000\u3000\u89e3\u91ca\uff1a<\/strong><\/p>\n<p>std::bind\u7b2c\u4e00\u4e2a\u53c2\u6570\u4e3a\u5bf9\u8c61\u51fd\u6570\u6307\u9488\uff0c\u8868\u793a\u51fd\u6570\u76f8\u5bf9\u4e8e\u7c7b\u7684\u9996\u5730\u5740\u7684\u504f\u79fb\u91cf\uff1b<\/p>\n<p>testAdd\u4e3a\u5bf9\u8c61\u6307\u9488\uff1b<\/p>\n<p>std::placeholders::_1\u548cstd::placeholders::_2\u4e3a\u53c2\u6570\u5360\u4f4d\u7b26\uff0c\u8868\u793astd::bind\u5c01\u88c5\u7684\u53ef\u6267\u884c\u5bf9\u8c61\u53ef\u4ee5\u63a5\u53d7\u4e24\u4e2a\u53c2\u6570\u3002<\/p>\n<p>&nbsp;<\/p>\n<p><strong>\u3000\u3000\u8fd0\u884c\u7ed3\u679c\uff1a<\/strong><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/images2015.cnblogs.com\/blog\/821158\/201607\/821158-20160730104817778-2096453912.png\" alt=\"\" \/><\/p>\n<p>\u662f\u7684\uff0c\u5f97\u51fa\u8fd9\u4e2a\u7ed3\u679c\uff0c\u4f60\u5c31\u53ef\u4ee5\u7b49\u7740\u5403\u8089\u4e86\uff0c\u6211\u4eec\u7684Test\u51fd\u6570\u5728\u51fd\u6570\u6307\u9488\u548c\u7c7b\u5bf9\u8c61\u51fd\u6570\u4e2d\u90fd\u4e24\u79cd\u60c5\u51b5\u4e0b\u90fd\u5b8c\u7f8e\u8fd0\u884c\u3002<\/p>\n<p>&nbsp;<\/p>\n<h2 id=\"title52\">5.2\u3001lamda\u8868\u8fbe\u5f0f<\/h2>\n<p>\u5728\u4f17\u591a\u7684C++11\u65b0\u7279\u6027\u4e2d\uff0c\u4e2a\u4eba\u89c9\u5f97lamda\u8868\u8fbe\u5f0f\u4e0d\u4ec5\u4ec5\u662f\u4e00\u4e2a\u8bed\u6cd5\u65b0\u7279\u6027\uff0c\u5bf9\u4e8e\u6ca1\u6709\u7528\u8fc7java\u6216C#lamda\u8868\u8fbe\u5f0f\u8bfb\u8005\uff0cC++11\u7684lamda\u8868\u8fbe\u5f0f\u5728\u4e00\u5b9a\u7a0b\u5ea6\u4e0a\u8fd8\u51b2\u51fb\u7740\u4f60\u5bf9\u4f20\u7edfC++\u7f16\u7a0b\u7684\u601d\u7ef4\u548c\u60f3\u6cd5\u3002<\/p>\n<p>\u6211\u4eec\u5148\u4ece\u4e00\u4e2a\u7b80\u5355\u7684\u4f8b\u5b50\u6765\u770b\u770blamda\u8868\u8fbe\u5f0f\uff1a<\/p>\n<div class=\"cnblogs_code\">\n<div class=\"cnblogs_code_toolbar\"><span class=\"cnblogs_code_copy\"><a title=\"\u590d\u5236\u4ee3\u7801\"><img decoding=\"async\" src=\"https:\/\/common.cnblogs.com\/images\/copycode.gif\" alt=\"\u590d\u5236\u4ee3\u7801\" \/><\/a><\/span><\/div>\n<pre>\/\/\u793a\u4f8b\u4ee3\u78011.0 http:\/\/www.cnblogs.com\/feng-sc\/p\/5710724.html\r\n1 int main()\r\n2 {\r\n3     auto add= [](int a, int b)-&gt;int{\r\n4         return a + b;\r\n5     };\r\n6     int ret = add(1,2);\r\n7     std::cout &lt;&lt; \"ret:\" &lt;&lt; ret &lt;&lt; std::endl;\r\n8     return 0;\r\n9 }<\/pre>\n<div class=\"cnblogs_code_toolbar\"><span class=\"cnblogs_code_copy\"><a title=\"\u590d\u5236\u4ee3\u7801\"><img decoding=\"async\" src=\"https:\/\/common.cnblogs.com\/images\/copycode.gif\" alt=\"\u590d\u5236\u4ee3\u7801\" \/><\/a><\/span><\/div>\n<\/div>\n<p><strong>\u3000\u3000\u89e3\u91ca\uff1a<\/strong><\/p>\n<p>\u7b2c3\u81f35\u884c\u4e3alamda\u8868\u8fbe\u5f0f\u7684\u5b9a\u4e49\u90e8\u5206<\/p>\n<p>[]\uff1a\u4e2d\u62ec\u53f7\u7528\u4e8e\u63a7\u5236main\u51fd\u6570\u4e0e\u5185\uff0clamda\u8868\u8fbe\u5f0f\u4e4b\u524d\u7684\u53d8\u91cf\u5728lamda\u8868\u8fbe\u5f0f\u4e2d\u7684\u8bbf\u95ee\u5f62\u5f0f\uff1b<\/p>\n<p>\uff08int a,int b\uff09\uff1a\u4e3a\u51fd\u6570\u7684\u5f62\u53c2<\/p>\n<p>-&gt;int\uff1alamda\u8868\u8fbe\u5f0f\u51fd\u6570\u7684\u8fd4\u56de\u503c\u5b9a\u4e49<\/p>\n<p>{}:\u5927\u62ec\u53f7\u5185\u4e3alamda\u8868\u8fbe\u5f0f\u7684\u51fd\u6570\u4f53\u3002<\/p>\n<p><strong>\u3000\u3000\u8fd0\u884c\u7ed3\u679c\uff1a<\/strong><\/p>\n<p><strong>\u3000\u3000<img decoding=\"async\" src=\"https:\/\/images2015.cnblogs.com\/blog\/821158\/201607\/821158-20160730110812622-1325843948.png\" alt=\"\" \/><\/strong><\/p>\n<p>\u6211\u4f7f\u7528lamda\u8868\u8fbe\u5f0f\u4fee\u65395.1\u4e2d\u7684\u4f8b\u5b50\u770b\u770b\uff1a<\/p>\n<p>main.cpp<\/p>\n<div class=\"cnblogs_code\">\n<div class=\"cnblogs_code_toolbar\"><span class=\"cnblogs_code_copy\"><a title=\"\u590d\u5236\u4ee3\u7801\"><img decoding=\"async\" src=\"https:\/\/common.cnblogs.com\/images\/copycode.gif\" alt=\"\u590d\u5236\u4ee3\u7801\" \/><\/a><\/span><\/div>\n<pre>\/\/\u793a\u4f8b\u4ee3\u78011.0 http:\/\/www.cnblogs.com\/feng-sc\/p\/5710724.html\r\n.....\r\n\r\nint main()\r\n{\r\n    Test test;\r\n    test.Add(add, 1, 2);\r\n\r\n    TestAdd testAdd;\r\n    test.Add(std::bind(&amp;TestAdd::Add, testAdd, std::placeholders::_1, std::placeholders::_2), 1, 2);\r\n\r\n    test.Add([](int a, int b)-&gt;int {\r\n        std::cout &lt;&lt; \"lamda add fun\" &lt;&lt; std::endl;\r\n        return a + b;\r\n    },1,2);\r\n    return 0;\r\n}<\/pre>\n<div class=\"cnblogs_code_toolbar\"><span class=\"cnblogs_code_copy\"><a title=\"\u590d\u5236\u4ee3\u7801\"><img decoding=\"async\" src=\"https:\/\/common.cnblogs.com\/images\/copycode.gif\" alt=\"\u590d\u5236\u4ee3\u7801\" \/><\/a><\/span><\/div>\n<\/div>\n<p><strong>\u3000\u3000\u8fd0\u884c\u7ed3\u679c\uff1a<\/strong><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/images2015.cnblogs.com\/blog\/821158\/201607\/821158-20160730112549091-1384515279.png\" alt=\"\" \/><\/p>\n<p>&nbsp;<\/p>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>C++11\u5e38\u7528\u7279\u6027\u7684\u4f7f\u7528\u7ecf\u9a8c\u603b\u7ed3 \u6982\u8ff0\u53ca<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"colormag_page_container_layout":"default_layout","colormag_page_sidebar_layout":"default_layout","footnotes":""},"categories":[],"tags":[118],"class_list":["post-1155","post","type-post","status-publish","format-standard","hentry","tag-02-"],"_links":{"self":[{"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/posts\/1155","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/comments?post=1155"}],"version-history":[{"count":0,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/posts\/1155\/revisions"}],"wp:attachment":[{"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/media?parent=1155"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/categories?post=1155"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/tags?post=1155"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}