{"id":7554,"date":"2026-07-31T23:27:52","date_gmt":"2026-07-31T15:27:52","guid":{"rendered":"https:\/\/i007.cc\/wordpress\/?p=7554"},"modified":"2026-07-31T23:27:52","modified_gmt":"2026-07-31T15:27:52","slug":"%e8%a7%a3%e9%87%8a-move-semantics","status":"publish","type":"post","link":"https:\/\/i007.cc\/wordpress\/archives\/7554","title":{"rendered":"\u89e3\u91ca move semantics"},"content":{"rendered":"<div data-rs-index=\"28\" data-index=\"28\">\n<div tabindex=\"0\" role=\"article\" aria-setsize=\"30\" aria-posinset=\"29\" aria-label=\"Message 29 of 30\">\n<div data-test-render-count=\"2\">\n<div class=\"mb-1 mt-[var(--msg-gap,1.5rem)] group group\/message-row\">\n<div class=\"flex flex-col items-end gap-1\">\n<div class=\"group relative inline-flex gap-2 bg-bg-300 dark:[[data-darker-default]_&amp;]:bg-bg-000 rounded-xl pl-2.5 py-[var(--msg-bubble-py,0.625rem)] break-words text-text-100 transition-all max-w-[75ch] flex-col !px-[var(--msg-bubble-px,1rem)] max-w-[85%]\" data-user-message-bubble=\"true\">\n<div class=\"flex flex-row gap-2 relative\">\n<div class=\"flex-1\">\n<div class=\"font-large !font-user-message py-0.5 grid grid-cols-1 gap-2 relative [&amp;_ul]:!space-y-0 [&amp;_ol]:!space-y-0 [&amp;_ul]:pl-8 [&amp;_ol]:pl-8\" data-testid=\"user-message\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div data-rs-index=\"29\" data-index=\"29\" data-last-message=\"true\">\n<div tabindex=\"-1\" role=\"article\" aria-setsize=\"30\" aria-posinset=\"30\" aria-label=\"Message 30 of 30\">\n<div data-test-render-count=\"1\">\n<div class=\"group group\/message-row\">\n<div class=\"group relative relative pb-[var(--msg-assistant-pb,0.75rem)]\" data-is-streaming=\"false\">\n<div class=\"font-claude-response relative leading-[1.65rem] [&amp;_pre&gt;div]:bg-bg-000\/50 [&amp;_pre&gt;div]:border-0.5 [&amp;_pre&gt;div]:border-border-400 [&amp;_.ignore-pre-bg&gt;div]:bg-transparent [&amp;_.standard-markdown_:is(p,blockquote,h1,h2,h3,h4,h5,h6)]:pl-2 [&amp;_.standard-markdown_:is(p,blockquote,ul,ol,h1,h2,h3,h4,h5,h6)]:pr-8 [&amp;_.progressive-markdown_:is(p,blockquote,h1,h2,h3,h4,h5,h6)]:pl-2 [&amp;_.progressive-markdown_:is(p,blockquote,ul,ol,h1,h2,h3,h4,h5,h6)]:pr-8\">\n<div class=\"grid grid-rows-[auto_auto] min-w-0\">\n<div class=\"row-start-2 col-start-1 relative grid grid-rows-[auto_auto] isolate min-w-0\">\n<div class=\"row-start-1 col-start-1 relative z-[2] min-w-0\">\n<div class=\"standard-markdown grid-cols-1 grid [&amp;_&gt;_*]:min-w-0 gap-3 [&amp;_&gt;_*:last-child]:mb-0 print:block print:[&amp;_&gt;_*_+_*]:mt-3 standard-markdown\">\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\">Move semantics \u662f C++11 \u6700\u91cd\u8981\u7684\u7279\u6027\uff0c\u7406\u89e3\u6df1\u5ea6\u662f\u533a\u5206 Senior \u548c Junior \u5de5\u7a0b\u5e08\u7684\u6838\u5fc3\u6807\u51c6\u4e4b\u4e00\u3002\u4ece\u6839\u4e0a\u8bb2\u6e05\u695a\u3002<\/p>\n<hr class=\"border-border-200 border-t-0.5 my-3 mx-1.5\" \/>\n<h3 class=\"text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold\" dir=\"ltr\">\u95ee\u9898\u7684\u8d77\u70b9\uff1aC++03 \u7684\u62f7\u8d1d\u5f00\u9500<\/h3>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\">\u5148\u770b\u6ca1\u6709 move semantics \u7684\u4e16\u754c\uff1a<\/p>\n<div class=\"relative group\/copy bg-bg-000\/50 border-0.5 border-border-400 rounded-lg focus:outline-none focus-visible:ring-2 focus-visible:ring-accent-100\" tabindex=\"0\" role=\"group\" aria-label=\"cpp code\">\n<div class=\"sticky opacity-0 group-hover\/copy:opacity-100 group-focus-within\/copy:opacity-100 top-2 py-2 h-12 w-0 float-right\">\n<div class=\"absolute right-0 h-8 px-2 items-center inline-flex z-10\"><\/div>\n<\/div>\n<div class=\"text-text-500 font-small p-3.5 pb-0\">cpp<\/div>\n<div class=\"overflow-x-auto\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">std::vector&lt;std::string&gt; make_names() {\r\n    std::vector&lt;std::string&gt; result;\r\n    result.push_back(\"Alice\");\r\n    result.push_back(\"Bob\");\r\n    return result;   \/\/ C++03\uff1a\u89e6\u53d1\u62f7\u8d1d\u6784\u9020\uff0c\u6574\u4e2a vector \u88ab\u590d\u5236\u4e00\u4efd\r\n}                    \/\/ \u7136\u540e\u5c40\u90e8\u53d8\u91cf result \u88ab\u9500\u6bc1\r\n\r\nauto names = make_names();  \/\/ \u53c8\u4e00\u6b21\u62f7\u8d1d\r\n\/\/ \u5b9e\u9645\u6570\u636e\u88ab\u590d\u5236\u4e86\u4e24\u6b21\uff0c\u7136\u540e\u539f\u59cb\u6570\u636e\u88ab\u4e22\u5f03<\/pre>\n<p>&nbsp;<\/p>\n<\/div>\n<\/div>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\">C++03 \u91cc\uff0c\u51fd\u6570\u8fd4\u56de\u4e00\u4e2a\u5bb9\u5668\uff0c\u5fc5\u987b\u628a\u6240\u6709\u6570\u636e\u62f7\u8d1d\u4e00\u4efd\u518d\u9500\u6bc1\u539f\u4ef6\u2014\u2014\u5c31\u50cf\u4f60\u642c\u5bb6\u65f6\u628a\u6bcf\u4ef6\u5bb6\u5177\u590d\u523b\u4e00\u4efd\u642c\u8fdb\u65b0\u5bb6\uff0c\u7136\u540e\u628a\u65e7\u5bb6\u5177\u6254\u6389\uff0c\u8352\u8c2c\u4e14\u6602\u8d35\u3002<\/p>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\">Move semantics \u7684\u6838\u5fc3\u601d\u60f3\uff1a<strong>\u5982\u679c\u6e90\u5bf9\u8c61\u9a6c\u4e0a\u5c31\u8981\u88ab\u9500\u6bc1\uff0c\u4e3a\u4ec0\u4e48\u4e0d\u76f4\u63a5\u628a\u8d44\u6e90&#8221;\u5077&#8221;\u8fc7\u6765\uff0c\u800c\u662f\u8001\u8001\u5b9e\u5b9e\u590d\u5236\u4e00\u4efd\u518d\u9500\u6bc1\u539f\u4ef6\uff1f<\/strong><\/p>\n<hr class=\"border-border-200 border-t-0.5 my-3 mx-1.5\" \/>\n<h3 class=\"text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold\" dir=\"ltr\">\u5de6\u503c\u4e0e\u53f3\u503c\uff1a\u8bed\u4e49\u7684\u57fa\u7840<\/h3>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\">\u7406\u89e3 move \u5fc5\u987b\u5148\u7406\u89e3\u503c\u7c7b\u522b\uff1a<\/p>\n<div class=\"relative group\/copy bg-bg-000\/50 border-0.5 border-border-400 rounded-lg focus:outline-none focus-visible:ring-2 focus-visible:ring-accent-100\" tabindex=\"0\" role=\"group\" aria-label=\"cpp code\">\n<div class=\"sticky opacity-0 group-hover\/copy:opacity-100 group-focus-within\/copy:opacity-100 top-2 py-2 h-12 w-0 float-right\">\n<div class=\"absolute right-0 h-8 px-2 items-center inline-flex z-10\"><\/div>\n<\/div>\n<div class=\"text-text-500 font-small p-3.5 pb-0\">cpp<\/div>\n<div class=\"overflow-x-auto\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">int x = 42;\r\nint y = x;      \/\/ x \u662f\u5de6\u503c\uff1a\u6709\u540d\u5b57\uff0c\u6709\u5730\u5740\uff0c\u53ef\u4ee5\u51fa\u73b0\u5728\u8d4b\u503c\u5de6\u4fa7\r\nint z = x + 1;  \/\/ x+1 \u662f\u53f3\u503c\uff1a\u4e34\u65f6\u7684\uff0c\u6ca1\u6709\u540d\u5b57\uff0c\u8868\u8fbe\u5f0f\u7ed3\u675f\u5c31\u6d88\u5931\r\n\r\nstd::string s = \"hello\";\r\nstd::string t = s;              \/\/ s \u662f\u5de6\u503c\uff0c\u89e6\u53d1\u62f7\u8d1d\r\nstd::string u = std::string(\"world\"); \/\/ \u4e34\u65f6\u5bf9\u8c61\u662f\u53f3\u503c\uff0c\u53ef\u4ee5\u89e6\u53d1\u79fb\u52a8\r\n\r\n\/\/ \u76f4\u89c9\u5224\u65ad\uff1a\u80fd\u53d6\u5730\u5740\u7684\u662f\u5de6\u503c\uff0c\u4e0d\u80fd\u53d6\u5730\u5740\u7684\u662f\u53f3\u503c\r\n&amp;x;         \/\/ OK\uff0cx \u662f\u5de6\u503c\r\n&amp;(x + 1);   \/\/ \u7f16\u8bd1\u9519\u8bef\uff0cx+1 \u662f\u53f3\u503c<\/pre>\n<p>&nbsp;<\/p>\n<\/div>\n<\/div>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\">\u53f3\u503c\u5f15\u7528\u00a0<code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">T&amp;&amp;<\/code>\u00a0\u53ea\u80fd\u7ed1\u5b9a\u53f3\u503c\uff1a<\/p>\n<div class=\"relative group\/copy bg-bg-000\/50 border-0.5 border-border-400 rounded-lg focus:outline-none focus-visible:ring-2 focus-visible:ring-accent-100\" tabindex=\"0\" role=\"group\" aria-label=\"cpp code\">\n<div class=\"sticky opacity-0 group-hover\/copy:opacity-100 group-focus-within\/copy:opacity-100 top-2 py-2 h-12 w-0 float-right\">\n<div class=\"absolute right-0 h-8 px-2 items-center inline-flex z-10\"><\/div>\n<\/div>\n<div class=\"text-text-500 font-small p-3.5 pb-0\">cpp<\/div>\n<div class=\"overflow-x-auto\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">std::string&amp;  lref = s;              \/\/ \u5de6\u503c\u5f15\u7528\uff0c\u7ed1\u5b9a\u5de6\u503c\r\nstd::string&amp;&amp; rref = std::string(\"hello\");  \/\/ \u53f3\u503c\u5f15\u7528\uff0c\u7ed1\u5b9a\u53f3\u503c\uff08\u4e34\u65f6\u5bf9\u8c61\uff09\r\nstd::string&amp;&amp; rref2 = s;            \/\/ \u7f16\u8bd1\u9519\u8bef\uff01\u53f3\u503c\u5f15\u7528\u4e0d\u80fd\u7ed1\u5b9a\u5de6\u503c<\/pre>\n<p>&nbsp;<\/p>\n<\/div>\n<\/div>\n<hr class=\"border-border-200 border-t-0.5 my-3 mx-1.5\" \/>\n<h3 class=\"text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold\" dir=\"ltr\">Move \u7684\u672c\u8d28\uff1a\u8d44\u6e90\u8f6c\u79fb\u800c\u975e\u6570\u636e\u590d\u5236<\/h3>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\">\u4ee5\u00a0<code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">std::string<\/code>\u00a0\u4e3a\u4f8b\uff0c\u5185\u90e8\u5927\u81f4\u662f\uff1a<\/p>\n<div class=\"relative group\/copy bg-bg-000\/50 border-0.5 border-border-400 rounded-lg focus:outline-none focus-visible:ring-2 focus-visible:ring-accent-100\" tabindex=\"0\" role=\"group\" aria-label=\"cpp code\">\n<div class=\"sticky opacity-0 group-hover\/copy:opacity-100 group-focus-within\/copy:opacity-100 top-2 py-2 h-12 w-0 float-right\">\n<div class=\"absolute right-0 h-8 px-2 items-center inline-flex z-10\"><\/div>\n<\/div>\n<div class=\"text-text-500 font-small p-3.5 pb-0\">cpp<\/div>\n<div class=\"overflow-x-auto\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">class string {\r\n    char*  data_;   \/\/ \u6307\u5411\u5806\u4e0a\u7684\u5b57\u7b26\u6570\u7ec4\r\n    size_t size_;\r\n    size_t capacity_;\r\n};<\/pre>\n<p>&nbsp;<\/p>\n<\/div>\n<\/div>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\"><strong>\u62f7\u8d1d\u6784\u9020<\/strong>\uff1a\u5206\u914d\u65b0\u5185\u5b58\uff0c\u628a\u6bcf\u4e2a\u5b57\u8282\u590d\u5236\u8fc7\u53bb\uff0cO(n)\uff1a<\/p>\n<div class=\"relative group\/copy bg-bg-000\/50 border-0.5 border-border-400 rounded-lg focus:outline-none focus-visible:ring-2 focus-visible:ring-accent-100\" tabindex=\"0\" role=\"group\" aria-label=\"cpp code\">\n<div class=\"sticky opacity-0 group-hover\/copy:opacity-100 group-focus-within\/copy:opacity-100 top-2 py-2 h-12 w-0 float-right\">\n<div class=\"absolute right-0 h-8 px-2 items-center inline-flex z-10\"><\/div>\n<\/div>\n<div class=\"text-text-500 font-small p-3.5 pb-0\">cpp<\/div>\n<div class=\"overflow-x-auto\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">string(const string&amp; other)\r\n    : size_(other.size_), capacity_(other.capacity_) {\r\n    data_ = new char[capacity_];\r\n    memcpy(data_, other.data_, size_);  \/\/ \u590d\u5236\u6240\u6709\u6570\u636e\r\n}<\/pre>\n<p>&nbsp;<\/p>\n<\/div>\n<\/div>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\"><strong>\u79fb\u52a8\u6784\u9020<\/strong>\uff1a\u628a\u6307\u9488\u5077\u8fc7\u6765\uff0c\u628a\u539f\u5bf9\u8c61\u7f6e\u7a7a\uff0cO(1)\uff1a<\/p>\n<div class=\"relative group\/copy bg-bg-000\/50 border-0.5 border-border-400 rounded-lg focus:outline-none focus-visible:ring-2 focus-visible:ring-accent-100\" tabindex=\"0\" role=\"group\" aria-label=\"cpp code\">\n<div class=\"sticky opacity-0 group-hover\/copy:opacity-100 group-focus-within\/copy:opacity-100 top-2 py-2 h-12 w-0 float-right\">\n<div class=\"absolute right-0 h-8 px-2 items-center inline-flex z-10\"><\/div>\n<\/div>\n<div class=\"text-text-500 font-small p-3.5 pb-0\">cpp<\/div>\n<div class=\"overflow-x-auto\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">string(string&amp;&amp; other) noexcept          \/\/ \u63a5\u53d7\u53f3\u503c\u5f15\u7528\r\n    : data_(other.data_)                 \/\/ \u5077\u6307\u9488\r\n    , size_(other.size_)\r\n    , capacity_(other.capacity_) {\r\n    other.data_     = nullptr;           \/\/ \u539f\u5bf9\u8c61\u7f6e\u7a7a\r\n    other.size_     = 0;                 \/\/ \u9632\u6b62\u6790\u6784\u65f6 delete \u540c\u4e00\u5757\u5185\u5b58\r\n    other.capacity_ = 0;\r\n}<\/pre>\n<p>&nbsp;<\/p>\n<\/div>\n<\/div>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\">\u79fb\u52a8\u4e4b\u540e\u539f\u5bf9\u8c61\u5904\u4e8e**&#8221;\u6709\u6548\u4f46\u672a\u6307\u5b9a&#8221;\u72b6\u6001**\uff1a\u53ef\u4ee5\u5b89\u5168\u6790\u6784\uff0c\u53ef\u4ee5\u518d\u8d4b\u503c\uff0c\u4f46\u4e0d\u80fd\u5047\u8bbe\u5b83\u7684\u503c\u662f\u4ec0\u4e48\uff1a<\/p>\n<div class=\"relative group\/copy bg-bg-000\/50 border-0.5 border-border-400 rounded-lg focus:outline-none focus-visible:ring-2 focus-visible:ring-accent-100\" tabindex=\"0\" role=\"group\" aria-label=\"cpp code\">\n<div class=\"sticky opacity-0 group-hover\/copy:opacity-100 group-focus-within\/copy:opacity-100 top-2 py-2 h-12 w-0 float-right\">\n<div class=\"absolute right-0 h-8 px-2 items-center inline-flex z-10\"><\/div>\n<\/div>\n<div class=\"text-text-500 font-small p-3.5 pb-0\">cpp<\/div>\n<div class=\"overflow-x-auto\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">std::string a = \"hello world, this is a long string\";\r\nstd::string b = std::move(a);   \/\/ b \u62ff\u8d70\u4e86 a \u7684\u5185\u5b58\r\n\r\n\/\/ a \u73b0\u5728\u662f\u7a7a\u5b57\u7b26\u4e32\uff08\u5b9e\u73b0\u5b9a\u4e49\uff0c\u4e0d\u4fdd\u8bc1\uff09\r\n\/\/ \u53ef\u4ee5\u8fd9\u6837\u505a\uff1a\r\na = \"new value\";    \/\/ OK\uff0c\u91cd\u65b0\u8d4b\u503c\r\n\/\/ \u4e0d\u80fd\u8fd9\u6837\u505a\uff1a\r\nstd::cout &lt;&lt; a;     \/\/ \u5371\u9669\uff01\u4e0d\u8981\u5047\u8bbe a \u7684\u5185\u5bb9<\/pre>\n<p>&nbsp;<\/p>\n<\/div>\n<\/div>\n<hr class=\"border-border-200 border-t-0.5 my-3 mx-1.5\" \/>\n<h3 class=\"text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold\" dir=\"ltr\">std::move\uff1a\u53ea\u662f\u4e00\u4e2a cast<\/h3>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\">\u8fd9\u662f\u6700\u5bb9\u6613\u8bef\u89e3\u7684\u5730\u65b9\uff1a<strong><code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">std::move<\/code>\u00a0\u4e0d\u79fb\u52a8\u4efb\u4f55\u4e1c\u897f<\/strong>\uff0c\u5b83\u53ea\u662f\u628a\u5de6\u503c\u5f3a\u5236\u8f6c\u6362\u6210\u53f3\u503c\u5f15\u7528\uff0c\u544a\u8bc9\u7f16\u8bd1\u5668&#8221;\u8fd9\u4e2a\u5bf9\u8c61\u53ef\u4ee5\u88ab\u79fb\u52a8\u4e86&#8221;\uff1a<\/p>\n<div class=\"relative group\/copy bg-bg-000\/50 border-0.5 border-border-400 rounded-lg focus:outline-none focus-visible:ring-2 focus-visible:ring-accent-100\" tabindex=\"0\" role=\"group\" aria-label=\"cpp code\">\n<div class=\"sticky opacity-0 group-hover\/copy:opacity-100 group-focus-within\/copy:opacity-100 top-2 py-2 h-12 w-0 float-right\">\n<div class=\"absolute right-0 h-8 px-2 items-center inline-flex z-10\"><\/div>\n<\/div>\n<div class=\"text-text-500 font-small p-3.5 pb-0\">cpp<\/div>\n<div class=\"overflow-x-auto\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">\/\/ std::move \u7684\u5b8c\u6574\u5b9e\u73b0\r\ntemplate&lt;typename T&gt;\r\nconstexpr std::remove_reference_t&lt;T&gt;&amp;&amp;\r\nmove(T&amp;&amp; t) noexcept {\r\n    return static_cast&lt;std::remove_reference_t&lt;T&gt;&amp;&amp;&gt;(t);\r\n}\r\n\r\n\/\/ \u771f\u6b63\u7684\u79fb\u52a8\u53d1\u751f\u5728\u79fb\u52a8\u6784\u9020\u51fd\u6570\u91cc\uff0cmove \u53ea\u662f\u6253\u4e86\u4e2a\u6807\u8bb0\r\nstd::string a = \"hello\";\r\nstd::string b = std::move(a);\r\n\/\/              ^^^^^^^^^^^^ \u628a a \u8f6c\u6210\u53f3\u503c\u5f15\u7528\uff0c\u89e6\u53d1 string \u7684\u79fb\u52a8\u6784\u9020\r\n\/\/                           \u79fb\u52a8\u6784\u9020\u51fd\u6570\u624d\u662f\u771f\u6b63\"\u5077\"\u8d44\u6e90\u7684\u5730\u65b9<\/pre>\n<p>&nbsp;<\/p>\n<\/div>\n<\/div>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\">\u56e0\u6b64\uff0c\u5bf9<strong>\u4e0d\u53ef\u79fb\u52a8\u7684\u7c7b\u578b<\/strong>\u00a0<code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">std::move<\/code>\u00a0\u6beb\u65e0\u610f\u4e49\uff1a<\/p>\n<div class=\"relative group\/copy bg-bg-000\/50 border-0.5 border-border-400 rounded-lg focus:outline-none focus-visible:ring-2 focus-visible:ring-accent-100\" tabindex=\"0\" role=\"group\" aria-label=\"cpp code\">\n<div class=\"sticky opacity-0 group-hover\/copy:opacity-100 group-focus-within\/copy:opacity-100 top-2 py-2 h-12 w-0 float-right\">\n<div class=\"absolute right-0 h-8 px-2 items-center inline-flex z-10\"><\/div>\n<\/div>\n<div class=\"text-text-500 font-small p-3.5 pb-0\">cpp<\/div>\n<div class=\"overflow-x-auto\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">const std::string cs = \"hello\";\r\nstd::string s = std::move(cs);   \/\/ \u8c03\u7528\u7684\u662f\u62f7\u8d1d\u6784\u9020\uff01\r\n\/\/ const T&amp;&amp; \u65e0\u6cd5\u5339\u914d\u79fb\u52a8\u6784\u9020\u7684 T&amp;&amp;\uff0c\u9000\u5316\u4e3a const T&amp; \u7684\u62f7\u8d1d\u6784\u9020\r\n\/\/ move \u4e86\u4e2a\u5bc2\u5bde<\/pre>\n<p>&nbsp;<\/p>\n<\/div>\n<\/div>\n<hr class=\"border-border-200 border-t-0.5 my-3 mx-1.5\" \/>\n<h3 class=\"text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold\" dir=\"ltr\">\u7f16\u8bd1\u5668\u81ea\u52a8\u89e6\u53d1\u79fb\u52a8\u7684\u573a\u666f<\/h3>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\">\u4e0d\u662f\u53ea\u6709\u663e\u5f0f\u00a0<code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">std::move<\/code>\u00a0\u624d\u4f1a\u89e6\u53d1\u79fb\u52a8\uff0c\u4ee5\u4e0b\u60c5\u51b5\u7f16\u8bd1\u5668\u81ea\u52a8\u9009\u62e9\u79fb\u52a8\uff1a<\/p>\n<div class=\"relative group\/copy bg-bg-000\/50 border-0.5 border-border-400 rounded-lg focus:outline-none focus-visible:ring-2 focus-visible:ring-accent-100\" tabindex=\"0\" role=\"group\" aria-label=\"cpp code\">\n<div class=\"sticky opacity-0 group-hover\/copy:opacity-100 group-focus-within\/copy:opacity-100 top-2 py-2 h-12 w-0 float-right\">\n<div class=\"absolute right-0 h-8 px-2 items-center inline-flex z-10\"><\/div>\n<\/div>\n<div class=\"text-text-500 font-small p-3.5 pb-0\">cpp<\/div>\n<div class=\"overflow-x-auto\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">\/\/ 1. \u51fd\u6570\u8fd4\u56de\u5c40\u90e8\u53d8\u91cf\uff08NRVO\/RVO\uff0c\u6216\u8005 move\uff09\r\nstd::string make_string() {\r\n    std::string result = \"hello\";\r\n    return result;    \/\/ \u7f16\u8bd1\u5668\u4f18\u5148 RVO\uff08\u76f4\u63a5\u5728\u76ee\u6807\u5730\u5740\u6784\u9020\uff09\r\n                      \/\/ RVO \u4e0d\u53ef\u7528\u65f6\uff0c\u81ea\u52a8 move\uff08\u5c40\u90e8\u53d8\u91cf\u662f\u53f3\u503c\uff09\r\n}\r\n\r\n\/\/ 2. \u4e34\u65f6\u5bf9\u8c61\u4f5c\u4e3a\u53c2\u6570\r\nvoid process(std::string s);\r\nprocess(std::string(\"temp\"));   \/\/ \u4e34\u65f6\u5bf9\u8c61\uff0c\u89e6\u53d1\u79fb\u52a8\u6784\u9020\r\nprocess(std::move(existing));   \/\/ \u663e\u5f0f move\r\n\r\n\/\/ 3. \u53f3\u503c\u8d4b\u503c\r\nstd::vector&lt;int&gt; v1 = {1, 2, 3};\r\nstd::vector&lt;int&gt; v2;\r\nv2 = std::move(v1);     \/\/ \u79fb\u52a8\u8d4b\u503c\uff0cv1 \u88ab\u6e05\u7a7a\r\nv2 = make_vector();      \/\/ \u8fd4\u56de\u7684\u4e34\u65f6\u5bf9\u8c61\u89e6\u53d1\u79fb\u52a8\u8d4b\u503c<\/pre>\n<p>&nbsp;<\/p>\n<\/div>\n<\/div>\n<hr class=\"border-border-200 border-t-0.5 my-3 mx-1.5\" \/>\n<h3 class=\"text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold\" dir=\"ltr\">\u4e3a\u81ea\u5b9a\u4e49\u7c7b\u5b9e\u73b0\u79fb\u52a8\u8bed\u4e49<\/h3>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\">\u6e38\u620f\u91cc\u7684\u8d44\u6e90\u7c7b\u662f\u6700\u5178\u578b\u7684\u573a\u666f\uff1a<\/p>\n<div class=\"relative group\/copy bg-bg-000\/50 border-0.5 border-border-400 rounded-lg focus:outline-none focus-visible:ring-2 focus-visible:ring-accent-100\" tabindex=\"0\" role=\"group\" aria-label=\"cpp code\">\n<div class=\"sticky opacity-0 group-hover\/copy:opacity-100 group-focus-within\/copy:opacity-100 top-2 py-2 h-12 w-0 float-right\">\n<div class=\"absolute right-0 h-8 px-2 items-center inline-flex z-10\"><\/div>\n<\/div>\n<div class=\"text-text-500 font-small p-3.5 pb-0\">cpp<\/div>\n<div class=\"overflow-x-auto\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">class Texture {\r\n    GLuint  gpu_handle_ = 0;     \/\/ GPU \u8d44\u6e90\u53e5\u67c4\r\n    uint8_t* cpu_data_  = nullptr;\r\n    size_t   data_size_ = 0;\r\n\r\npublic:\r\n    \/\/ \u62f7\u8d1d\u6784\u9020\uff1a\u91cd\u65b0\u4e0a\u4f20 GPU\uff0c\u6602\u8d35\r\n    Texture(const Texture&amp; other)\r\n        : data_size_(other.data_size_) {\r\n        cpu_data_ = new uint8_t[data_size_];\r\n        memcpy(cpu_data_, other.cpu_data_, data_size_);\r\n        gpu_handle_ = upload_to_gpu(cpu_data_, data_size_);  \/\/ \u5f88\u6162\r\n    }\r\n\r\n    \/\/ \u79fb\u52a8\u6784\u9020\uff1a\u53ea\u8f6c\u79fb\u53e5\u67c4\uff0cO(1)\r\n    Texture(Texture&amp;&amp; other) noexcept\r\n        : gpu_handle_(other.gpu_handle_)\r\n        , cpu_data_  (other.cpu_data_)\r\n        , data_size_ (other.data_size_) {\r\n        \/\/ \u539f\u5bf9\u8c61\u7f6e\u7a7a\uff0c\u6790\u6784\u65f6\u4e0d\u4f1a\u91ca\u653e\u8d44\u6e90\r\n        other.gpu_handle_ = 0;\r\n        other.cpu_data_   = nullptr;\r\n        other.data_size_  = 0;\r\n    }\r\n\r\n    \/\/ \u79fb\u52a8\u8d4b\u503c\uff1a\u5148\u91ca\u653e\u81ea\u5df1\u7684\u8d44\u6e90\uff0c\u518d\u8f6c\u79fb\r\n    Texture&amp; operator=(Texture&amp;&amp; other) noexcept {\r\n        if (this == &amp;other) return *this;\r\n\r\n        \/\/ \u91ca\u653e\u5f53\u524d\u6301\u6709\u7684\u8d44\u6e90\r\n        delete[] cpu_data_;\r\n        if (gpu_handle_) delete_from_gpu(gpu_handle_);\r\n\r\n        \/\/ \u8f6c\u79fb\r\n        gpu_handle_ = other.gpu_handle_;\r\n        cpu_data_   = other.cpu_data_;\r\n        data_size_  = other.data_size_;\r\n\r\n        other.gpu_handle_ = 0;\r\n        other.cpu_data_   = nullptr;\r\n        other.data_size_  = 0;\r\n\r\n        return *this;\r\n    }\r\n\r\n    ~Texture() {\r\n        delete[] cpu_data_;\r\n        if (gpu_handle_) delete_from_gpu(gpu_handle_);\r\n    }\r\n};\r\n\r\n\/\/ \u4f7f\u7528\uff1a\r\nstd::vector&lt;Texture&gt; textures;\r\ntextures.push_back(load_texture(\"player.png\"));  \/\/ \u79fb\u52a8\u8fdb vector\uff0c\u4e0d\u62f7\u8d1d\r\nTexture t = load_texture(\"enemy.png\");\r\ntextures.push_back(std::move(t));  \/\/ \u663e\u5f0f move\uff0ct \u4e4b\u540e gpu_handle_ = 0<\/pre>\n<p>&nbsp;<\/p>\n<\/div>\n<\/div>\n<hr class=\"border-border-200 border-t-0.5 my-3 mx-1.5\" \/>\n<h3 class=\"text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold\" dir=\"ltr\">noexcept \u4e0e vector \u6269\u5bb9\uff1a\u9690\u85cf\u7684\u5173\u952e\u7ec6\u8282<\/h3>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\">\u8fd9\u662f\u9762\u8bd5\u9ad8\u9891\u8003\u70b9\uff0c\u5f88\u591a\u4eba\u4e0d\u77e5\u9053\uff1a<\/p>\n<div class=\"relative group\/copy bg-bg-000\/50 border-0.5 border-border-400 rounded-lg focus:outline-none focus-visible:ring-2 focus-visible:ring-accent-100\" tabindex=\"0\" role=\"group\" aria-label=\"cpp code\">\n<div class=\"sticky opacity-0 group-hover\/copy:opacity-100 group-focus-within\/copy:opacity-100 top-2 py-2 h-12 w-0 float-right\">\n<div class=\"absolute right-0 h-8 px-2 items-center inline-flex z-10\"><\/div>\n<\/div>\n<div class=\"text-text-500 font-small p-3.5 pb-0\">cpp<\/div>\n<div class=\"overflow-x-auto\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">\/\/ vector \u6269\u5bb9\u65f6\u8981\u628a\u65e7\u5143\u7d20\u642c\u5230\u65b0\u5185\u5b58\r\n\/\/ \u5f3a\u5f02\u5e38\u5b89\u5168\u8981\u6c42\uff1a\u5982\u679c\u642c\u79fb\u8fc7\u7a0b\u4e2d\u51fa\u9519\uff0c\u539f\u6570\u636e\u5fc5\u987b\u5b8c\u597d\r\n\/\/ \r\n\/\/ \u5982\u679c\u79fb\u52a8\u6784\u9020\u662f noexcept\uff1a\u642c\u79fb\u9014\u4e2d\u4e0d\u4f1a\u629b\u5f02\u5e38\uff0c\u653e\u5fc3\u7528 move\uff0cO(1)\r\n\/\/ \u5982\u679c\u79fb\u52a8\u6784\u9020\u4e0d\u662f noexcept\uff1a\u642c\u79fb\u9014\u4e2d\u53ef\u80fd\u629b\u5f02\u5e38\uff0c\u4e0d\u6562 move\r\n\/\/                             \u5fc5\u987b\u7528 copy\uff0c\u786e\u4fdd\u539f\u6570\u636e\u8fd8\u5728\uff0cO(n)\r\n\r\nclass A {\r\npublic:\r\n    A(A&amp;&amp;) noexcept { ... }   \/\/ vector \u6269\u5bb9\u65f6\u7528 move \u2713\r\n};\r\n\r\nclass B {\r\npublic:\r\n    B(B&amp;&amp;) { ... }            \/\/ \u6ca1\u6709 noexcept\uff0cvector \u6269\u5bb9\u65f6\u7528 copy \u2717\r\n};\r\n\r\n\/\/ \u9a8c\u8bc1\uff1a\r\nstd::vector&lt;A&gt; va;\r\nva.push_back(A{});    \/\/ \u6269\u5bb9\u65f6 O(1) move\r\n\r\nstd::vector&lt;B&gt; vb;\r\nvb.push_back(B{});    \/\/ \u6269\u5bb9\u65f6 O(n) copy\uff0c\u5373\u4f7f\u4f60\u5199\u4e86\u79fb\u52a8\u6784\u9020\uff01\r\n\r\n\/\/ \u7ed3\u8bba\uff1a\u79fb\u52a8\u6784\u9020\u548c\u79fb\u52a8\u8d4b\u503c\uff0c\u5fc5\u987b\u52a0 noexcept<\/pre>\n<p>&nbsp;<\/p>\n<\/div>\n<\/div>\n<hr class=\"border-border-200 border-t-0.5 my-3 mx-1.5\" \/>\n<h3 class=\"text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold\" dir=\"ltr\">move \u4e0d\u8d77\u4f5c\u7528\u7684\u4e09\u4e2a\u7ecf\u5178\u573a\u666f<\/h3>\n<div class=\"relative group\/copy bg-bg-000\/50 border-0.5 border-border-400 rounded-lg focus:outline-none focus-visible:ring-2 focus-visible:ring-accent-100\" tabindex=\"0\" role=\"group\" aria-label=\"cpp code\">\n<div class=\"sticky opacity-0 group-hover\/copy:opacity-100 group-focus-within\/copy:opacity-100 top-2 py-2 h-12 w-0 float-right\">\n<div class=\"absolute right-0 h-8 px-2 items-center inline-flex z-10\"><\/div>\n<\/div>\n<div class=\"text-text-500 font-small p-3.5 pb-0\">cpp<\/div>\n<div class=\"overflow-x-auto\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">\/\/ 1. const \u5bf9\u8c61\uff08\u4e0a\u9762\u63d0\u8fc7\uff09\r\nconst std::string cs = \"hello\";\r\nstd::string s = std::move(cs);   \/\/ \u5b9e\u9645\u62f7\u8d1d\r\n\r\n\/\/ 2. std::array\uff1a\u5143\u7d20\u5728\u6808\u4e0a\uff0cmove \u4ecd\u7136\u9010\u4e2a\u62f7\u8d1d\r\nstd::array&lt;int, 10000&gt; a1, a2;\r\na2 = std::move(a1);   \/\/ O(n)\uff0c\u6ca1\u6709\u6027\u80fd\u63d0\u5347\r\n\r\n\/\/ 3. SSO\uff08Small String Optimization\uff09\uff1a\u77ed\u5b57\u7b26\u4e32\u5b58\u5728\u6808\u4e0a\r\nstd::string s1 = \"hi\";  \/\/ \u77ed\u5b57\u7b26\u4e32\uff0cdata \u5728\u5bf9\u8c61\u5185\u90e8\uff0c\u4e0d\u5728\u5806\r\nstd::string s2 = std::move(s1);  \/\/ \u4ecd\u7136\u62f7\u8d1d\u4e24\u4e2a\u5b57\u8282\uff0c\u65e0\u6cd5\"\u5077\u6307\u9488\"\r\n\/\/ \u53ea\u6709\u957f\u5b57\u7b26\u4e32\uff08\u901a\u5e38 &gt; 15\u5b57\u8282\uff09move \u624d\u771f\u7684\u5feb<\/pre>\n<p>&nbsp;<\/p>\n<\/div>\n<\/div>\n<hr class=\"border-border-200 border-t-0.5 my-3 mx-1.5\" \/>\n<h3 class=\"text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold\" dir=\"ltr\">\u4e0e\u5b8c\u7f8e\u8f6c\u53d1\u7684\u5173\u7cfb<\/h3>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\">move semantics \u7684&#8221;\u5b6a\u751f\u5144\u5f1f&#8221;\u662f\u5b8c\u7f8e\u8f6c\u53d1\uff0c\u4e24\u8005\u90fd\u4f9d\u8d56\u53f3\u503c\u5f15\u7528\uff0c\u4f46\u76ee\u7684\u4e0d\u540c\uff1a<\/p>\n<div class=\"relative group\/copy bg-bg-000\/50 border-0.5 border-border-400 rounded-lg focus:outline-none focus-visible:ring-2 focus-visible:ring-accent-100\" tabindex=\"0\" role=\"group\" aria-label=\"cpp code\">\n<div class=\"sticky opacity-0 group-hover\/copy:opacity-100 group-focus-within\/copy:opacity-100 top-2 py-2 h-12 w-0 float-right\">\n<div class=\"absolute right-0 h-8 px-2 items-center inline-flex z-10\"><\/div>\n<\/div>\n<div class=\"text-text-500 font-small p-3.5 pb-0\">cpp<\/div>\n<div class=\"overflow-x-auto\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">\/\/ move\uff1a\u660e\u786e\u544a\u8bc9\u7f16\u8bd1\u5668\"\u653e\u5f03\u8fd9\u4e2a\u5bf9\u8c61\u7684\u6240\u6709\u6743\"\r\n\/\/ forward\uff1a\u4fdd\u6301\u53c2\u6570\u539f\u6709\u7684\u503c\u7c7b\u522b\uff0c\u4f20\u9012\u7ed9\u4e0b\u4e00\u5c42\r\n\r\ntemplate&lt;typename T&gt;\r\nvoid relay(T&amp;&amp; arg) {\r\n    \/\/ arg \u5728\u8fd9\u91cc\u662f\u5de6\u503c\uff01\uff08\u6709\u540d\u5b57\u7684\u53d8\u91cf\u90fd\u662f\u5de6\u503c\uff09\r\n    target(arg);                     \/\/ \u603b\u662f\u4f20\u5de6\u503c\r\n    target(std::move(arg));          \/\/ \u603b\u662f\u4f20\u53f3\u503c\uff08\u4e0d\u5bf9\uff01\uff09\r\n    target(std::forward&lt;T&gt;(arg));    \/\/ \u4fdd\u6301\u539f\u59cb\u7c7b\u522b\uff08\u6b63\u786e\uff09\r\n    \/\/ T \u662f string&amp; \u65f6\uff0cforward \u4f20\u5de6\u503c\r\n    \/\/ T \u662f string  \u65f6\uff0cforward \u4f20\u53f3\u503c\uff08string&amp;&amp; \u6298\u53e0\u540e\uff09\r\n}\r\n\r\n\/\/ \u5b9e\u9645\u4f7f\u7528\u573a\u666f\uff1a\u6784\u9020\u51fd\u6570\u5b8c\u7f8e\u8f6c\u53d1\u53c2\u6570\r\ntemplate&lt;typename... Args&gt;\r\nvoid emplace_back_impl(Args&amp;&amp;... args) {\r\n    new (end_) T(std::forward&lt;Args&gt;(args)...);  \/\/ \u539f\u5730\u6784\u9020\uff0c\u96f6\u62f7\u8d1d\r\n}<\/pre>\n<p>&nbsp;<\/p>\n<\/div>\n<\/div>\n<hr class=\"border-border-200 border-t-0.5 my-3 mx-1.5\" \/>\n<h3 class=\"text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold\" dir=\"ltr\">\u9762\u8bd5\u56de\u7b54\u6846\u67b6<\/h3>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\">NVIDIA \u6216 EA \u95ee&#8221;\u89e3\u91ca move semantics&#8221;\uff0c\u597d\u7684\u56de\u7b54\u7ed3\u6784\u662f\uff1a<\/p>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\">\u4ece<strong>\u95ee\u9898\u51fa\u53d1<\/strong>\uff1aC++03 \u91cc\u51fd\u6570\u8fd4\u56de\u5927\u5bf9\u8c61\u8981\u62f7\u8d1d\uff0c\u4e34\u65f6\u5bf9\u8c61\u91cc\u7684\u8d44\u6e90\u7528\u5b8c\u5c31\u6254\uff0c\u6d6a\u8d39\u3002<\/p>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\">\u8bb2<strong>\u6838\u5fc3\u673a\u5236<\/strong>\uff1a\u53f3\u503c\u5f15\u7528\u8ba9\u7f16\u8bd1\u5668\u533a\u5206&#8221;\u8fd9\u4e2a\u5bf9\u8c61\u4e4b\u540e\u8fd8\u8981\u7528&#8221;\u548c&#8221;\u8fd9\u4e2a\u5bf9\u8c61\u9a6c\u4e0a\u8981\u9500\u6bc1&#8221;\uff0c\u79fb\u52a8\u6784\u9020\/\u8d4b\u503c\u9488\u5bf9\u540e\u8005\uff0c\u53ea\u8f6c\u79fb\u8d44\u6e90\u6240\u6709\u6743\uff0cO(1)\u3002<\/p>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\">\u8bf4\u00a0<strong><code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">std::move<\/code>\u00a0\u7684\u672c\u8d28<\/strong>\uff1a\u53ea\u662f cast\uff0c\u672c\u8eab\u4e0d\u79fb\u52a8\u4efb\u4f55\u4e1c\u897f\uff0c\u79fb\u52a8\u53d1\u751f\u5728\u6784\u9020\u51fd\u6570\u91cc\u3002<\/p>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\">\u70b9\u51fa<strong>\u4e09\u4e2a\u6613\u9519\u70b9<\/strong>\uff1aconst \u5bf9\u8c61 move \u9000\u5316\u4e3a\u62f7\u8d1d\uff1b\u79fb\u52a8\u6784\u9020\u4e0d\u52a0 noexcept \u5bfc\u81f4 vector \u6269\u5bb9\u7528\u62f7\u8d1d\uff1barray \u548c\u77ed\u5b57\u7b26\u4e32 move \u6ca1\u6709\u4f18\u5316\u3002<\/p>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\">\u6700\u540e\u7ed3\u5408<strong>\u4f60\u7684\u9879\u76ee<\/strong>\uff1a\u6e38\u620f\u91cc Texture\/Buffer\/Mesh \u8fd9\u7c7b\u8d44\u6e90\u7c7b\uff0c\u79fb\u52a8\u6784\u9020\u628a GPU \u53e5\u67c4\u8f6c\u79fb\u800c\u4e0d\u662f\u91cd\u65b0\u4e0a\u4f20\uff0c\u6027\u80fd\u5dee\u8ddd\u663e\u8457\u3002<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Move semantics \u662f C++<\/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":[24],"tags":[],"class_list":["post-7554","post","type-post","status-publish","format-standard","hentry","category-value_docs"],"_links":{"self":[{"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/posts\/7554","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=7554"}],"version-history":[{"count":0,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/posts\/7554\/revisions"}],"wp:attachment":[{"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/media?parent=7554"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/categories?post=7554"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/tags?post=7554"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}