{"id":2052,"date":"2025-03-24T08:48:27","date_gmt":"2025-03-23T23:48:27","guid":{"rendered":"https:\/\/dexall.co.jp\/articles\/?p=2052"},"modified":"2025-03-24T08:48:52","modified_gmt":"2025-03-23T23:48:52","slug":"c-unowned_map%e5%ae%8c%e5%85%a8%e3%82%ac%e3%82%a4%e3%83%89%ef%bc%9a%e3%83%91%e3%83%95%e3%82%a9%e3%83%bc%e3%83%9e%e3%83%b3%e3%82%b9%e3%82%92%e6%9c%80%e5%a4%a7%e5%8c%96%e3%81%99%e3%82%8b7%e3%81%a4","status":"publish","type":"post","link":"https:\/\/dexall.co.jp\/articles\/?p=2052","title":{"rendered":"C++ unowned_map\u5b8c\u5168\u30ac\u30a4\u30c9\uff1a\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u6700\u5927\u5316\u3059\u308b7\u3064\u306e\u5b9f\u8df5\u30c6\u30af\u30cb\u30c3\u30af"},"content":{"rendered":"\n<div class=\"toc\"><br \/>\n<b>Warning<\/b>:  Undefined array key \"is_admin\" in <b>\/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>116<\/b><br \/>\n<br \/>\n<b>Warning<\/b>:  Undefined array key \"is_category_top\" in <b>\/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>121<\/b><br \/>\n<br \/>\n<b>Warning<\/b>:  Undefined array key \"is_top\" in <b>\/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>128<\/b><br \/>\n    <div id=\"toc_container\" class=\"sgb-toc--bullets js-smooth-scroll\" data-dialog-title=\"\u76ee\u6b21\">\n      <p class=\"toc_title\">\u76ee\u6b21 <\/p>\n      <ul class=\"toc_list\">  <li class=\"first\">    <a href=\"#i-0\">unordered_map\u306e\u57fa\u790e\u77e5\u8b58<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-1\">\u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u3068\u3057\u3066\u306e\u7279\u5fb4\u3068\u69cb\u9020<\/a>      <\/li>      <li>        <a href=\"#i-2\">map\u3068unordered_map\u306e\u6c7a\u5b9a\u7684\u306a\u9055\u3044<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-3\">\u30e1\u30e2\u30ea\u52b9\u7387\u3068\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306e\u7279\u6027<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-4\">unordered_map\u306e\u5b9f\u8df5\u7684\u306a\u4f7f\u3044\u65b9<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-5\">\u57fa\u672c\u7684\u306a\u64cd\u4f5c\u3068\u30b7\u30f3\u30bf\u30c3\u30af\u30b9<\/a>      <\/li>      <li>        <a href=\"#i-6\">\u30ab\u30b9\u30bf\u30e0\u30ad\u30fc\u3068\u7b49\u4fa1\u6027\u306e\u5b9a\u7fa9\u65b9\u6cd5<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-7\">\u30a4\u30c6\u30ec\u30fc\u30b7\u30e7\u30f3\u3068\u30d0\u30b1\u30c3\u30c8\u7ba1\u7406<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-8\">\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u6700\u5927\u5316\u3059\u308b\u30c6\u30af\u30cb\u30c3\u30af<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-9\">\u6b63\u3057\u3044\u30d0\u30b1\u30c3\u30c8\u30b5\u30a4\u30ba\u306e\u8a2d\u5b9a\u65b9\u6cd5<\/a>      <\/li>      <li>        <a href=\"#i-10\">\u52b9\u7387\u7684\u306a\u30cf\u30c3\u30b7\u30e5\u95a2\u6570\u306e\u5b9f\u88c5<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-11\">\u30e1\u30e2\u30ea\u6700\u9069\u5316\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-12\">\u5b9f\u52d9\u3067\u306e\u6d3b\u7528\u30b7\u30fc\u30f3<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-13\">\u9ad8\u901f\u306a\u691c\u7d22\u304c\u5fc5\u8981\u306a\u30b1\u30fc\u30b9\u3067\u306e\u5b9f\u88c5\u4f8b<\/a>      <\/li>      <li>        <a href=\"#i-14\">\u5927\u898f\u6a21\u30c7\u30fc\u30bf\u51e6\u7406\u3067\u306e\u4f7f\u7528\u65b9\u6cd5<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-15\">\u30de\u30eb\u30c1\u30b9\u30ec\u30c3\u30c9\u74b0\u5883\u3067\u306e\u6ce8\u610f\u70b9<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-16\">\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0\u3068\u30c7\u30d0\u30c3\u30b0<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-17\">\u4e00\u822c\u7684\u306a\u5b9f\u88c5\u30df\u30b9\u3068\u5bfe\u51e6\u6cd5<\/a>      <\/li>      <li>        <a href=\"#i-18\">\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u306e\u9632\u6b62\u7b56<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-19\">\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u4f4e\u4e0b\u306e\u539f\u56e0\u7279\u5b9a\u3068\u6539\u5584<\/a>      <\/li>    <\/ul>  <\/li>  <li class=\"last\">    <a href=\"#i-20\">\u6b21\u306e\u30b9\u30c6\u30c3\u30d7<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-21\">\u3088\u308a\u9ad8\u5ea6\u306a\u4f7f\u7528\u65b9\u6cd5\u306e\u5b66\u7fd2<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-22\">\u95a2\u9023\u3059\u308bSTL\u30b3\u30f3\u30c6\u30ca\u306e\u5b66\u7fd2<\/a>      <\/li>    <\/ul>  <\/li><\/ul>\n      <a href=\"#\" class=\"sgb-toc-button js-toc-button\" rel=\"nofollow\" data-open-dialog=\"true\"><i class=\"fa fa-list\"><\/i><span class=\"sgb-toc-button__text\">\u76ee\u6b21\u3078<\/span><\/a>\n    <\/div><\/div><h2 class=\"wp-block-heading\" id=\"i-0\">unordered_map\u306e\u57fa\u790e\u77e5\u8b58<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-1\">\u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u3068\u3057\u3066\u306e\u7279\u5fb4\u3068\u69cb\u9020<\/h3>\n\n\n\n<p>C++\u306eunordered_map\u306f\u3001\u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb\u3092\u5b9f\u88c5\u3057\u305f\u30b3\u30f3\u30c6\u30ca\u3067\u3059\u3002\u30ad\u30fc\u3068\u5024\u306e\u30da\u30a2\u3092\u683c\u7d0d\u3057\u3001\u30ad\u30fc\u3092\u4f7f\u3063\u3066\u9ad8\u901f\u306b\u30c7\u30fc\u30bf\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u4ee5\u4e0b\u306e\u7279\u5fb4\u3092\u6301\u3063\u3066\u3044\u307e\u3059\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5e73\u5747\u7684\u306a\u6642\u9593\u8a08\u7b97\u91cf\uff1aO(1)<\/li>\n\n\n\n<li>\u6700\u60aa\u306e\u6642\u9593\u8a08\u7b97\u91cf\uff1aO(n)<\/li>\n\n\n\n<li>\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf\uff1aO(n)<\/li>\n\n\n\n<li>\u30ad\u30fc\u306e\u9806\u5e8f\u306f\u4fdd\u6301\u3055\u308c\u306a\u3044<\/li>\n<\/ul>\n\n\n\n<p>\u57fa\u672c\u7684\u306a\u5b9f\u88c5\u4f8b\u3092\u898b\u3066\u307f\u307e\u3057\u3087\u3046\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#include &lt;unordered_map&gt;\n#include &lt;string&gt;\n\nint main() {\n    \/\/ \u6587\u5b57\u5217\u3092\u30ad\u30fc\u3001\u6574\u6570\u3092\u5024\u3068\u3057\u3066\u6301\u3064unordered_map\u3092\u4f5c\u6210\n    std::unordered_map&lt;std::string, int&gt; scores;\n\n    \/\/ \u8981\u7d20\u306e\u8ffd\u52a0\n    scores[\"Alice\"] = 100;    \/\/ \u633f\u5165\n    scores.insert({\"Bob\", 95});  \/\/ \u5225\u306e\u633f\u5165\u65b9\u6cd5\n\n    \/\/ \u8981\u7d20\u3078\u306e\u30a2\u30af\u30bb\u30b9\n    std::cout &lt;&lt; \"Alice's score: \" &lt;&lt; scores[\"Alice\"] &lt;&lt; std::endl;\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-2\">map\u3068unordered_map\u306e\u6c7a\u5b9a\u7684\u306a\u9055\u3044<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u5185\u90e8\u5b9f\u88c5\u306e\u9055\u3044\uff1a<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>map<\/code>: \u8d64\u9ed2\u6728\uff08\u5e73\u8861\u4e8c\u5206\u63a2\u7d22\u6728\uff09<\/li>\n\n\n\n<li><code>unordered_map<\/code>: \u30cf\u30c3\u30b7\u30e5\u30c6\u30fc\u30d6\u30eb<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u6027\u80fd\u7279\u6027\uff1a<\/li>\n<\/ol>\n\n\n<div id=\"id-a4561057-19a7-4c23-80dd-6405dffd1f4b\">\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u64cd\u4f5c<\/th><th>map<\/th><th>unordered_map<\/th><\/tr><\/thead><tbody><tr><td>\u691c\u7d22<\/td><td>O(log n)<\/td><td>O(1) \u5e73\u5747<\/td><\/tr><tr><td>\u633f\u5165<\/td><td>O(log n)<\/td><td>O(1) \u5e73\u5747<\/td><\/tr><tr><td>\u524a\u9664<\/td><td>O(log n)<\/td><td>O(1) \u5e73\u5747<\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div>\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>\u30e1\u30e2\u30ea\u4f7f\u7528\uff1a<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>map<\/code>: \u8981\u7d20\u6570\u306b\u6bd4\u4f8b<\/li>\n\n\n\n<li><code>unordered_map<\/code>: \u8981\u7d20\u6570\uff0b\u30d0\u30b1\u30c3\u30c8\u6570\u306b\u6bd4\u4f8b<\/li>\n<\/ul>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>\u30a4\u30c6\u30ec\u30fc\u30b7\u30e7\u30f3\u9806\u5e8f\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ map\u306f\u5e38\u306b\u30ad\u30fc\u3067\u30bd\u30fc\u30c8\u3055\u308c\u305f\u9806\nstd::map&lt;int, std::string&gt; ordered_map {{1, \"one\"}, {3, \"three\"}, {2, \"two\"}};\n\/\/ 1, 2, 3\u306e\u9806\u3067\u51fa\u529b\n\n\/\/ unordered_map\u306f\u9806\u5e8f\u4e0d\u5b9a\nstd::unordered_map&lt;int, std::string&gt; unordered_map {{1, \"one\"}, {3, \"three\"}, {2, \"two\"}};\n\/\/ \u51fa\u529b\u9806\u5e8f\u306f\u4e0d\u5b9a<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-3\">\u30e1\u30e2\u30ea\u52b9\u7387\u3068\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306e\u7279\u6027<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30d0\u30b1\u30c3\u30c8\u7ba1\u7406\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">std::unordered_map&lt;string, int&gt; umap;\n\n\/\/ \u30d0\u30b1\u30c3\u30c8\u6570\u306e\u53d6\u5f97\u3068\u8a2d\u5b9a\nsize_t n = umap.bucket_count();  \/\/ \u73fe\u5728\u306e\u30d0\u30b1\u30c3\u30c8\u6570\nfloat lf = umap.load_factor();   \/\/ \u73fe\u5728\u306e\u8ca0\u8377\u7387\numap.rehash(20);                 \/\/ \u30d0\u30b1\u30c3\u30c8\u6570\u309220\u306b\u8a2d\u5b9a<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u30e1\u30e2\u30ea\u6700\u9069\u5316\u306e\u30dd\u30a4\u30f3\u30c8\uff1a<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u9069\u5207\u306a\u521d\u671f\u30d0\u30b1\u30c3\u30c8\u6570\u306e\u8a2d\u5b9a<\/li>\n\n\n\n<li>\u8ca0\u8377\u7387\u306e\u7ba1\u7406\uff08\u30c7\u30d5\u30a9\u30eb\u30c8\u306f1.0\uff09<\/li>\n\n\n\n<li>\u30ea\u30cf\u30c3\u30b7\u30e5\u306e\u56de\u6570\u3092\u6700\u5c0f\u9650\u306b<\/li>\n<\/ul>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306b\u5f71\u97ff\u3092\u4e0e\u3048\u308b\u8981\u56e0\uff1a<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30cf\u30c3\u30b7\u30e5\u95a2\u6570\u306e\u8cea<\/li>\n\n\n\n<li>\u30ad\u30fc\u306e\u5206\u5e03<\/li>\n\n\n\n<li>\u30d0\u30b1\u30c3\u30c8\u30b5\u30a4\u30ba\u3068\u30ea\u30cf\u30c3\u30b7\u30e5\u306e\u30bf\u30a4\u30df\u30f3\u30b0<\/li>\n<\/ul>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u30ab\u30b9\u30bf\u30e0\u30cf\u30c3\u30b7\u30e5\u95a2\u6570\u306e\u4f8b\nstruct CustomHash {\n    size_t operator()(const std::string&amp; str) const {\n        \/\/ \u30b7\u30f3\u30d7\u30eb\u306a\u30cf\u30c3\u30b7\u30e5\u95a2\u6570\u306e\u4f8b\n        size_t hash = 0;\n        for(char c : str) {\n            hash = hash * 31 + c;\n        }\n        return hash;\n    }\n};\n\n\/\/ \u30ab\u30b9\u30bf\u30e0\u30cf\u30c3\u30b7\u30e5\u95a2\u6570\u3092\u4f7f\u7528\u3057\u305funordered_map\nstd::unordered_map&lt;std::string, int, CustomHash&gt; custom_map;<\/pre>\n\n\n\n<p>\u3053\u306e\u3088\u3046\u306b\u3001unordered_map\u306f\u9ad8\u901f\u306a\u30c7\u30fc\u30bf\u30a2\u30af\u30bb\u30b9\u304c\u5fc5\u8981\u306a\u5834\u5408\u306b\u9069\u3057\u3066\u3044\u307e\u3059\u304c\u3001\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf\u3068\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306e\u30d0\u30e9\u30f3\u30b9\u3092\u53d6\u308b\u305f\u3081\u306e\u9069\u5207\u306a\u8a2d\u5b9a\u304c\u91cd\u8981\u3067\u3059\u3002\u6b21\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u3053\u308c\u3089\u306e\u77e5\u8b58\u3092\u57fa\u306b\u3001\u3088\u308a\u5b9f\u8df5\u7684\u306a\u4f7f\u7528\u65b9\u6cd5\u306b\u3064\u3044\u3066\u8aac\u660e\u3057\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-4\">unordered_map\u306e\u5b9f\u8df5\u7684\u306a\u4f7f\u3044\u65b9<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-5\">\u57fa\u672c\u7684\u306a\u64cd\u4f5c\u3068\u30b7\u30f3\u30bf\u30c3\u30af\u30b9<\/h3>\n\n\n\n<p>unordered_map\u306e\u57fa\u672c\u7684\u306a\u64cd\u4f5c\u65b9\u6cd5\u3092\u5b9f\u8df5\u7684\u306a\u4f8b\u3092\u901a\u3058\u3066\u898b\u3066\u3044\u304d\u307e\u3057\u3087\u3046\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u8981\u7d20\u306e\u64cd\u4f5c\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#include &lt;unordered_map&gt;\n#include &lt;string&gt;\n\nstd::unordered_map&lt;std::string, int&gt; inventory;\n\n\/\/ \u633f\u5165\u306e\u8907\u6570\u306e\u65b9\u6cd5\ninventory[\"apple\"] = 5;                    \/\/ \u4ee3\u5165\u306b\u3088\u308b\u633f\u5165\ninventory.insert({\"banana\", 3});           \/\/ insert\u95a2\u6570\u306b\u3088\u308b\u633f\u5165\ninventory.emplace(\"orange\", 7);            \/\/ emplace\u306b\u3088\u308b\u76f4\u63a5\u69cb\u7bc9\n\n\/\/ \u8981\u7d20\u306e\u691c\u7d22\nif (inventory.find(\"apple\") != inventory.end()) {\n    std::cout &lt;&lt; \"\u5728\u5eab\u3042\u308a: \" &lt;&lt; inventory[\"apple\"] &lt;&lt; \"\u500b\\n\";\n}\n\n\/\/ \u5b89\u5168\u306a\u5024\u306e\u53d6\u5f97\nint count = inventory.value(\"grape\", 0);   \/\/ \u30ad\u30fc\u304c\u5b58\u5728\u3057\u306a\u3044\u5834\u5408\u306f0\u3092\u8fd4\u3059\n\n\/\/ \u8981\u7d20\u306e\u524a\u9664\ninventory.erase(\"banana\");                 \/\/ \u30ad\u30fc\u306b\u3088\u308b\u524a\u9664<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u30a4\u30c6\u30ec\u30fc\u30b7\u30e7\u30f3\u3068\u7bc4\u56f2\u30d9\u30fc\u30b9for\u30eb\u30fc\u30d7\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u5168\u8981\u7d20\u306e\u8d70\u67fb\nfor (const auto&amp; [item, count] : inventory) {\n    std::cout &lt;&lt; item &lt;&lt; \": \" &lt;&lt; count &lt;&lt; \"\u500b\\n\";\n}\n\n\/\/ \u7279\u5b9a\u306e\u30d0\u30b1\u30c3\u30c8\u306e\u8d70\u67fb\nsize_t bucket = inventory.bucket(\"apple\");\nfor (auto it = inventory.begin(bucket); it != inventory.end(bucket); ++it) {\n    std::cout &lt;&lt; it-&gt;first &lt;&lt; \": \" &lt;&lt; it-&gt;second &lt;&lt; \"\\n\";\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-6\">\u30ab\u30b9\u30bf\u30e0\u30ad\u30fc\u3068\u7b49\u4fa1\u6027\u306e\u5b9a\u7fa9\u65b9\u6cd5<\/h3>\n\n\n\n<p>\u8907\u96d1\u306a\u578b\u3092\u30ad\u30fc\u3068\u3057\u3066\u4f7f\u7528\u3059\u308b\u5834\u5408\u3001\u30cf\u30c3\u30b7\u30e5\u95a2\u6570\u3068\u7b49\u4fa1\u6027\u6bd4\u8f03\u306e\u5b9a\u7fa9\u304c\u5fc5\u8981\u3067\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u30ab\u30b9\u30bf\u30e0\u69cb\u9020\u4f53\nstruct Point {\n    int x, y;\n\n    bool operator==(const Point&amp; other) const {\n        return x == other.x &amp;&amp; y == other.y;\n    }\n};\n\n\/\/ \u30cf\u30c3\u30b7\u30e5\u95a2\u6570\u306e\u5b9a\u7fa9\nnamespace std {\n    template &lt;&gt;\n    struct hash&lt;Point&gt; {\n        size_t operator()(const Point&amp; p) const {\n            return hash&lt;int&gt;()(p.x) ^ (hash&lt;int&gt;()(p.y) &lt;&lt; 1);\n        }\n    };\n}\n\n\/\/ \u30ab\u30b9\u30bf\u30e0\u30ad\u30fc\u3092\u4f7f\u7528\u3057\u305funordered_map\nstd::unordered_map&lt;Point, std::string&gt; point_map;\npoint_map[Point{1, 2}] = \"Point A\";<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-7\">\u30a4\u30c6\u30ec\u30fc\u30b7\u30e7\u30f3\u3068\u30d0\u30b1\u30c3\u30c8\u7ba1\u7406<\/h3>\n\n\n\n<p>\u52b9\u7387\u7684\u306a\u30d0\u30b1\u30c3\u30c8\u7ba1\u7406\u3068\u30a4\u30c6\u30ec\u30fc\u30b7\u30e7\u30f3\u65b9\u6cd5\u306b\u3064\u3044\u3066\u8aac\u660e\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30d0\u30b1\u30c3\u30c8\u60c5\u5831\u306e\u53d6\u5f97\u3068\u7ba1\u7406\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">std::unordered_map&lt;std::string, int&gt; umap;\n\n\/\/ \u30d0\u30b1\u30c3\u30c8\u95a2\u9023\u306e\u60c5\u5831\u53d6\u5f97\nstd::cout &lt;&lt; \"\u30d0\u30b1\u30c3\u30c8\u6570: \" &lt;&lt; umap.bucket_count() &lt;&lt; \"\\n\";\nstd::cout &lt;&lt; \"\u6700\u5927\u30d0\u30b1\u30c3\u30c8\u6570: \" &lt;&lt; umap.max_bucket_count() &lt;&lt; \"\\n\";\nstd::cout &lt;&lt; \"\u73fe\u5728\u306e\u8ca0\u8377\u7387: \" &lt;&lt; umap.load_factor() &lt;&lt; \"\\n\";\nstd::cout &lt;&lt; \"\u6700\u5927\u8ca0\u8377\u7387: \" &lt;&lt; umap.max_load_factor() &lt;&lt; \"\\n\";\n\n\/\/ \u30d0\u30b1\u30c3\u30c8\u30b5\u30a4\u30ba\u306e\u6700\u9069\u5316\numap.reserve(1000);  \/\/ 1000\u8981\u7d20\u7528\u306b\u30e1\u30e2\u30ea\u3092\u4e88\u7d04<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u52b9\u7387\u7684\u306a\u30a4\u30c6\u30ec\u30fc\u30b7\u30e7\u30f3\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u8981\u7d20\u306e\u4e00\u62ec\u51e6\u7406\nvoid process_items(std::unordered_map&lt;std::string, int&gt;&amp; items) {\n    \/\/ \u30a4\u30c6\u30ec\u30fc\u30bf\u306e\u7121\u52b9\u5316\u3092\u9632\u3050\u305f\u3081\u3001\u524a\u9664\u5bfe\u8c61\u3092\u5225\u9014\u4fdd\u6301\n    std::vector&lt;std::string&gt; to_remove;\n\n    for (const auto&amp; [key, value] : items) {\n        if (value == 0) {\n            to_remove.push_back(key);\n        }\n    }\n\n    \/\/ \u524a\u9664\u51e6\u7406\n    for (const auto&amp; key : to_remove) {\n        items.erase(key);\n    }\n}<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>\u30d0\u30b1\u30c3\u30c8\u3054\u3068\u306e\u51e6\u7406\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u30d0\u30b1\u30c3\u30c8\u5185\u306e\u8981\u7d20\u6570\u306e\u5206\u5e03\u3092\u78ba\u8a8d\nvoid analyze_bucket_distribution(const std::unordered_map&lt;std::string, int&gt;&amp; map) {\n    std::vector&lt;size_t&gt; distribution(10, 0);  \/\/ \u30d0\u30b1\u30c3\u30c8\u30b5\u30a4\u30ba\u306e\u5206\u5e03\n\n    for (size_t i = 0; i &lt; map.bucket_count(); ++i) {\n        size_t bucket_size = map.bucket_size(i);\n        if (bucket_size &lt; distribution.size()) {\n            ++distribution[bucket_size];\n        }\n    }\n\n    \/\/ \u5206\u5e03\u306e\u8868\u793a\n    for (size_t i = 0; i &lt; distribution.size(); ++i) {\n        std::cout &lt;&lt; i &lt;&lt; \"\u8981\u7d20\u306e\u30d0\u30b1\u30c3\u30c8\u6570: \" &lt;&lt; distribution[i] &lt;&lt; \"\\n\";\n    }\n}<\/pre>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u5b9f\u8df5\u7684\u306a\u4f7f\u7528\u65b9\u6cd5\u3092\u7406\u89e3\u3059\u308b\u3053\u3068\u3067\u3001unordered_map\u3092\u3088\u308a\u52b9\u679c\u7684\u306b\u6d3b\u7528\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u6b21\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u3055\u3089\u306b\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u5411\u4e0a\u3055\u305b\u308b\u305f\u3081\u306e\u5177\u4f53\u7684\u306a\u30c6\u30af\u30cb\u30c3\u30af\u306b\u3064\u3044\u3066\u8aac\u660e\u3057\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-8\">\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u6700\u5927\u5316\u3059\u308b\u30c6\u30af\u30cb\u30c3\u30af<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-9\">\u6b63\u3057\u3044\u30d0\u30b1\u30c3\u30c8\u30b5\u30a4\u30ba\u306e\u8a2d\u5b9a\u65b9\u6cd5<\/h3>\n\n\n\n<p>unordered_map\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u6700\u5927\u5316\u3059\u308b\u306b\u306f\u3001\u9069\u5207\u306a\u30d0\u30b1\u30c3\u30c8\u30b5\u30a4\u30ba\u306e\u8a2d\u5b9a\u304c\u91cd\u8981\u3067\u3059\u3002\u4ee5\u4e0b\u306b\u3001\u52b9\u7387\u7684\u306a\u8a2d\u5b9a\u65b9\u6cd5\u3092\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u4e8b\u524d\u306e\u30b5\u30a4\u30ba\u8a2d\u5b9a\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#include &lt;unordered_map&gt;\n#include &lt;chrono&gt;\n\n\/\/ \u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u8a08\u6e2c\u7528\u306e\u95a2\u6570\ntemplate&lt;typename Func&gt;\nlong long measure_time(Func&amp;&amp; func) {\n    auto start = std::chrono::high_resolution_clock::now();\n    func();\n    auto end = std::chrono::high_resolution_clock::now();\n    return std::chrono::duration_cast&lt;std::chrono::microseconds&gt;(end - start).count();\n}\n\n\/\/ \u30b5\u30a4\u30ba\u8a2d\u5b9a\u306e\u6bd4\u8f03\nvoid compare_sizing_strategies(int n) {\n    \/\/ \u30c7\u30d5\u30a9\u30eb\u30c8\u69cb\u7bc9\n    long long default_time = measure_time([n]() {\n        std::unordered_map&lt;int, int&gt; map1;\n        for (int i = 0; i &lt; n; ++i) {\n            map1[i] = i;\n        }\n    });\n\n    \/\/ reserve\u4f7f\u7528\n    long long reserved_time = measure_time([n]() {\n        std::unordered_map&lt;int, int&gt; map2;\n        map2.reserve(n);  \/\/ \u4e8b\u524d\u306b\u30b5\u30a4\u30ba\u3092\u78ba\u4fdd\n        for (int i = 0; i &lt; n; ++i) {\n            map2[i] = i;\n        }\n    });\n\n    std::cout &lt;&lt; \"\u30c7\u30d5\u30a9\u30eb\u30c8\u69cb\u7bc9\u6642\u9593: \" &lt;&lt; default_time &lt;&lt; \"\u03bcs\\n\";\n    std::cout &lt;&lt; \"reserve\u4f7f\u7528\u6642\u9593: \" &lt;&lt; reserved_time &lt;&lt; \"\u03bcs\\n\";\n}<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u8ca0\u8377\u7387\u306e\u6700\u9069\u5316\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">template&lt;typename K, typename V&gt;\nvoid optimize_load_factor(std::unordered_map&lt;K, V&gt;&amp; map, float target_load_factor) {\n    \/\/ \u73fe\u5728\u306e\u8ca0\u8377\u7387\u3092\u78ba\u8a8d\n    float current_load_factor = map.load_factor();\n\n    \/\/ \u76ee\u6a19\u306e\u8ca0\u8377\u7387\u3092\u8a2d\u5b9a\n    map.max_load_factor(target_load_factor);\n\n    \/\/ \u5fc5\u8981\u306b\u5fdc\u3058\u3066\u30ea\u30cf\u30c3\u30b7\u30e5\n    if (current_load_factor &gt; target_load_factor) {\n        map.rehash(std::ceil(map.size() \/ target_load_factor));\n    }\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-10\">\u52b9\u7387\u7684\u306a\u30cf\u30c3\u30b7\u30e5\u95a2\u6570\u306e\u5b9f\u88c5<\/h3>\n\n\n\n<p>\u826f\u3044\u30cf\u30c3\u30b7\u30e5\u95a2\u6570\u306f\u3001\u885d\u7a81\u3092\u6700\u5c0f\u9650\u306b\u6291\u3048\u3001\u8a08\u7b97\u30b3\u30b9\u30c8\u3092\u6291\u3048\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u6587\u5b57\u5217\u7528\u306e\u52b9\u7387\u7684\u306a\u30cf\u30c3\u30b7\u30e5\u95a2\u6570\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">struct FastStringHash {\n    \/\/ FNV-1a\u30cf\u30c3\u30b7\u30e5\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u5b9f\u88c5\n    size_t operator()(const std::string&amp; str) const {\n        static const size_t fnv_prime = 1099511628211ULL;\n        static const size_t fnv_offset_basis = 14695981039346656037ULL;\n\n        size_t hash = fnv_offset_basis;\n        for (char c : str) {\n            hash ^= static_cast&lt;size_t&gt;(c);\n            hash *= fnv_prime;\n        }\n        return hash;\n    }\n};\n\n\/\/ \u4f7f\u7528\u4f8b\nstd::unordered_map&lt;std::string, int, FastStringHash&gt; optimized_map;<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u8907\u5408\u30ad\u30fc\u306e\u30cf\u30c3\u30b7\u30e5\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">struct CompositeKey {\n    int id;\n    std::string name;\n\n    bool operator==(const CompositeKey&amp; other) const {\n        return id == other.id &amp;&amp; name == other.name;\n    }\n};\n\nnamespace std {\n    template&lt;&gt;\n    struct hash&lt;CompositeKey&gt; {\n        size_t operator()(const CompositeKey&amp; key) const {\n            \/\/ \u30cf\u30c3\u30b7\u30e5\u306e\u7d44\u307f\u5408\u308f\u305b\u30c6\u30af\u30cb\u30c3\u30af\n            size_t h1 = hash&lt;int&gt;{}(key.id);\n            size_t h2 = hash&lt;string&gt;{}(key.name);\n            return h1 ^ (h2 &lt;&lt; 1);  \/\/ \u30d3\u30c3\u30c8\u30b7\u30d5\u30c8\u3067\u826f\u3044\u5206\u6563\u3092\u78ba\u4fdd\n        }\n    };\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-11\">\u30e1\u30e2\u30ea\u6700\u9069\u5316\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30e1\u30e2\u30ea\u30a2\u30ed\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u6700\u9069\u5316\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u30ab\u30b9\u30bf\u30e0\u30a2\u30ed\u30b1\u30fc\u30bf\u306e\u4f7f\u7528\u4f8b\ntemplate&lt;typename T&gt;\nclass PoolAllocator {\n    \/\/ \u30e1\u30e2\u30ea\u30d7\u30fc\u30eb\u306e\u5b9f\u88c5\n    \/\/ ...\npublic:\n    using value_type = T;\n    T* allocate(size_t n) {\n        \/\/ \u30d7\u30fc\u30eb\u304b\u3089\u30e1\u30e2\u30ea\u3092\u5272\u308a\u5f53\u3066\n        return static_cast&lt;T*&gt;(pool_allocate(n * sizeof(T)));\n    }\n    void deallocate(T* p, size_t n) {\n        \/\/ \u30d7\u30fc\u30eb\u306b\u30e1\u30e2\u30ea\u3092\u8fd4\u5374\n        pool_deallocate(p, n * sizeof(T));\n    }\n};\n\n\/\/ \u30ab\u30b9\u30bf\u30e0\u30a2\u30ed\u30b1\u30fc\u30bf\u3092\u4f7f\u7528\u3057\u305funordered_map\nstd::unordered_map&lt;\n    std::string, \n    int, \n    std::hash&lt;std::string&gt;, \n    std::equal_to&lt;std::string&gt;,\n    PoolAllocator&lt;std::pair&lt;const std::string, int&gt;&gt;\n&gt; optimized_memory_map;<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u79fb\u52d5\u30bb\u30de\u30f3\u30c6\u30a3\u30af\u30b9\u306e\u6d3b\u7528\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">class LargeObject {\n    std::vector&lt;int&gt; data;\npublic:\n    LargeObject(size_t size) : data(size) {}\n    LargeObject(LargeObject&amp;&amp; other) noexcept = default;  \/\/ \u79fb\u52d5\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\n    LargeObject&amp; operator=(LargeObject&amp;&amp; other) noexcept = default;  \/\/ \u79fb\u52d5\u4ee3\u5165\n};\n\nstd::unordered_map&lt;int, LargeObject&gt; object_map;\n\/\/ \u52b9\u7387\u7684\u306a\u633f\u5165\nobject_map.emplace(1, LargeObject(1000));\n\/\/ \u8981\u7d20\u306e\u79fb\u52d5\nobject_map[2] = std::move(object_map[1]);<\/pre>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u6700\u9069\u5316\u30c6\u30af\u30cb\u30c3\u30af\u3092\u9069\u5207\u306b\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u3067\u3001unordered_map\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u5927\u5e45\u306b\u5411\u4e0a\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u6b21\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u3053\u308c\u3089\u306e\u30c6\u30af\u30cb\u30c3\u30af\u3092\u5b9f\u969b\u306e\u30e6\u30fc\u30b9\u30b1\u30fc\u30b9\u306b\u9069\u7528\u3059\u308b\u65b9\u6cd5\u306b\u3064\u3044\u3066\u8aac\u660e\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-12\">\u5b9f\u52d9\u3067\u306e\u6d3b\u7528\u30b7\u30fc\u30f3<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-13\">\u9ad8\u901f\u306a\u691c\u7d22\u304c\u5fc5\u8981\u306a\u30b1\u30fc\u30b9\u3067\u306e\u5b9f\u88c5\u4f8b<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30ad\u30e3\u30c3\u30b7\u30e5\u30b7\u30b9\u30c6\u30e0\u306e\u5b9f\u88c5\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#include &lt;unordered_map&gt;\n#include &lt;chrono&gt;\n#include &lt;optional&gt;\n\ntemplate&lt;typename K, typename V&gt;\nclass Cache {\n    struct CacheEntry {\n        V value;\n        std::chrono::steady_clock::time_point expiry;\n    };\n\n    std::unordered_map&lt;K, CacheEntry&gt; cache_map;\n    std::chrono::seconds ttl;\n\npublic:\n    Cache(std::chrono::seconds time_to_live) : ttl(time_to_live) {}\n\n    void put(const K&amp; key, const V&amp; value) {\n        auto expiry = std::chrono::steady_clock::now() + ttl;\n        cache_map[key] = CacheEntry{value, expiry};\n    }\n\n    std::optional&lt;V&gt; get(const K&amp; key) {\n        auto it = cache_map.find(key);\n        if (it != cache_map.end()) {\n            if (std::chrono::steady_clock::now() &lt; it-&gt;second.expiry) {\n                return it-&gt;second.value;\n            }\n            cache_map.erase(it);\n        }\n        return std::nullopt;\n    }\n\n    void cleanup() {\n        auto now = std::chrono::steady_clock::now();\n        for (auto it = cache_map.begin(); it != cache_map.end();) {\n            if (now &gt;= it-&gt;second.expiry) {\n                it = cache_map.erase(it);\n            } else {\n                ++it;\n            }\n        }\n    }\n};<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u9ad8\u901f\u306a\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">class DatabaseIndex {\n    std::unordered_map&lt;std::string, std::vector&lt;size_t&gt;&gt; index;\n\npublic:\n    \/\/ \u30ec\u30b3\u30fc\u30c9\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u4f5c\u6210\n    void index_record(const std::string&amp; key, size_t record_id) {\n        index[key].push_back(record_id);\n    }\n\n    \/\/ \u8907\u5408\u30af\u30a8\u30ea\u306e\u5b9f\u884c\n    std::vector&lt;size_t&gt; query(const std::vector&lt;std::string&gt;&amp; keys) {\n        if (keys.empty()) return {};\n\n        \/\/ \u6700\u521d\u306e\u30ad\u30fc\u306e\u7d50\u679c\u3092\u53d6\u5f97\n        auto result = index[keys[0]];\n        std::sort(result.begin(), result.end());\n\n        \/\/ \u6b8b\u308a\u306e\u30ad\u30fc\u3068\u306e\u7a4d\u96c6\u5408\u3092\u53d6\u308b\n        for (size_t i = 1; i &lt; keys.size(); ++i) {\n            std::vector&lt;size_t&gt; temp;\n            const auto&amp; current = index[keys[i]];\n            std::set_intersection(\n                result.begin(), result.end(),\n                current.begin(), current.end(),\n                std::back_inserter(temp)\n            );\n            result = std::move(temp);\n        }\n\n        return result;\n    }\n};<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-14\">\u5927\u898f\u6a21\u30c7\u30fc\u30bf\u51e6\u7406\u3067\u306e\u4f7f\u7528\u65b9\u6cd5<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30e1\u30e2\u30ea\u52b9\u7387\u306e\u826f\u3044\u30c7\u30fc\u30bf\u96c6\u8a08\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">class DataAggregator {\n    \/\/ \u30ad\u30fc\u3054\u3068\u306e\u96c6\u8a08\u5024\u3092\u4fdd\u6301\n    std::unordered_map&lt;std::string, double&gt; sums;\n    std::unordered_map&lt;std::string, size_t&gt; counts;\n\npublic:\n    \/\/ \u30b9\u30c8\u30ea\u30fc\u30df\u30f3\u30b0\u30c7\u30fc\u30bf\u306e\u96c6\u8a08\n    void add_data_point(const std::string&amp; key, double value) {\n        sums[key] += value;\n        counts[key]++;\n    }\n\n    \/\/ \u96c6\u8a08\u7d50\u679c\u306e\u53d6\u5f97\n    std::vector&lt;std::pair&lt;std::string, double&gt;&gt; get_averages() {\n        std::vector&lt;std::pair&lt;std::string, double&gt;&gt; results;\n        results.reserve(sums.size());\n\n        for (const auto&amp; [key, sum] : sums) {\n            if (counts[key] &gt; 0) {\n                results.emplace_back(key, sum \/ counts[key]);\n            }\n        }\n\n        return results;\n    }\n\n    \/\/ \u30e1\u30e2\u30ea\u4f7f\u7528\u91cf\u306e\u6700\u9069\u5316\n    void optimize_memory() {\n        \/\/ \u5fc5\u8981\u306b\u5fdc\u3058\u3066\u30d0\u30b1\u30c3\u30c8\u6570\u3092\u8abf\u6574\n        size_t optimal_bucket_count = std::ceil(sums.size() \/ sums.max_load_factor());\n        sums.rehash(optimal_bucket_count);\n        counts.rehash(optimal_bucket_count);\n    }\n};<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-15\">\u30de\u30eb\u30c1\u30b9\u30ec\u30c3\u30c9\u74b0\u5883\u3067\u306e\u6ce8\u610f\u70b9<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30b9\u30ec\u30c3\u30c9\u30bb\u30fc\u30d5\u306a\u5b9f\u88c5\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#include &lt;mutex&gt;\n#include &lt;shared_mutex&gt;\n\ntemplate&lt;typename K, typename V&gt;\nclass ThreadSafeMap {\n    mutable std::shared_mutex mutex;\n    std::unordered_map&lt;K, V&gt; data;\n\npublic:\n    \/\/ \u8aad\u307f\u53d6\u308a\u64cd\u4f5c\uff08\u5171\u6709\u30ed\u30c3\u30af\uff09\n    std::optional&lt;V&gt; get(const K&amp; key) const {\n        std::shared_lock lock(mutex);\n        auto it = data.find(key);\n        if (it != data.end()) {\n            return it-&gt;second;\n        }\n        return std::nullopt;\n    }\n\n    \/\/ \u66f8\u304d\u8fbc\u307f\u64cd\u4f5c\uff08\u6392\u4ed6\u30ed\u30c3\u30af\uff09\n    void put(const K&amp; key, const V&amp; value) {\n        std::unique_lock lock(mutex);\n        data[key] = value;\n    }\n\n    \/\/ \u6761\u4ef6\u4ed8\u304d\u66f4\u65b0\n    bool compare_and_swap(const K&amp; key, const V&amp; expected, const V&amp; new_value) {\n        std::unique_lock lock(mutex);\n        auto it = data.find(key);\n        if (it != data.end() &amp;&amp; it-&gt;second == expected) {\n            it-&gt;second = new_value;\n            return true;\n        }\n        return false;\n    }\n\n    \/\/ \u30d0\u30c3\u30c1\u51e6\u7406\n    void batch_update(const std::vector&lt;std::pair&lt;K, V&gt;&gt;&amp; updates) {\n        std::unique_lock lock(mutex);\n        for (const auto&amp; [key, value] : updates) {\n            data[key] = value;\n        }\n    }\n};<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u30ed\u30c3\u30af\u30d5\u30ea\u30fc\u306a\u5b9f\u88c5\u4f8b\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#include &lt;atomic&gt;\n\ntemplate&lt;typename K, typename V&gt;\nclass LockFreeCache {\n    struct Node {\n        K key;\n        std::atomic&lt;V&gt; value;\n        std::atomic&lt;Node*&gt; next;\n\n        Node(const K&amp; k, const V&amp; v) \n            : key(k), value(v), next(nullptr) {}\n    };\n\n    std::atomic&lt;Node*&gt; head;\n\npublic:\n    LockFreeCache() : head(nullptr) {}\n\n    void insert(const K&amp; key, const V&amp; value) {\n        Node* new_node = new Node(key, value);\n        new_node-&gt;next = head.load(std::memory_order_relaxed);\n\n        while (!head.compare_exchange_weak(\n            new_node-&gt;next,\n            new_node,\n            std::memory_order_release,\n            std::memory_order_relaxed)) {\n        }\n    }\n\n    std::optional&lt;V&gt; find(const K&amp; key) {\n        Node* current = head.load(std::memory_order_acquire);\n        while (current) {\n            if (current-&gt;key == key) {\n                return current-&gt;value.load(std::memory_order_relaxed);\n            }\n            current = current-&gt;next.load(std::memory_order_relaxed);\n        }\n        return std::nullopt;\n    }\n};<\/pre>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u5b9f\u88c5\u4f8b\u306f\u3001\u5b9f\u52d9\u3067\u306e\u4e00\u822c\u7684\u306a\u30e6\u30fc\u30b9\u30b1\u30fc\u30b9\u306b\u5bfe\u5fdc\u3057\u3066\u3044\u307e\u3059\u3002\u6b21\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u3053\u308c\u3089\u306e\u5b9f\u88c5\u3067\u767a\u751f\u3059\u308b\u53ef\u80fd\u6027\u306e\u3042\u308b\u554f\u984c\u3068\u305d\u306e\u30c7\u30d0\u30c3\u30b0\u65b9\u6cd5\u306b\u3064\u3044\u3066\u8aac\u660e\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-16\">\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0\u3068\u30c7\u30d0\u30c3\u30b0<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-17\">\u4e00\u822c\u7684\u306a\u5b9f\u88c5\u30df\u30b9\u3068\u5bfe\u51e6\u6cd5<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30a4\u30c6\u30ec\u30fc\u30bf\u306e\u7121\u52b9\u5316\u554f\u984c\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u554f\u984c\u306e\u3042\u308b\u30b3\u30fc\u30c9\nstd::unordered_map&lt;int, std::string&gt; map;\nfor (auto it = map.begin(); it != map.end(); ++it) {\n    if (some_condition) {\n        map.erase(it);  \/\/ \u30a4\u30c6\u30ec\u30fc\u30bf\u304c\u7121\u52b9\u5316\u3055\u308c\u308b\n        \/\/ \u6b21\u306e\u30a4\u30c6\u30ec\u30fc\u30b7\u30e7\u30f3\u3067\u672a\u5b9a\u7fa9\u52d5\u4f5c\n    }\n}\n\n\/\/ \u6b63\u3057\u3044\u5b9f\u88c5\nstd::unordered_map&lt;int, std::string&gt; map;\nfor (auto it = map.begin(); it != map.end();) {\n    if (some_condition) {\n        it = map.erase(it);  \/\/ erase\u306f\u6b21\u306e\u6709\u52b9\u306a\u30a4\u30c6\u30ec\u30fc\u30bf\u3092\u8fd4\u3059\n    } else {\n        ++it;\n    }\n}<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u7bc4\u56f2\u5916\u30a2\u30af\u30bb\u30b9\u306e\u9632\u6b62\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u5371\u967a\u306a\u5b9f\u88c5\nvoid process_data(const std::unordered_map&lt;int, std::string&gt;&amp; map, int key) {\n    std::string value = map[key];  \/\/ \u30ad\u30fc\u304c\u5b58\u5728\u3057\u306a\u3044\u5834\u5408\u3001\u8981\u7d20\u304c\u8ffd\u52a0\u3055\u308c\u308b\n    \/\/ ...\n}\n\n\/\/ \u5b89\u5168\u306a\u5b9f\u88c5\nvoid process_data(const std::unordered_map&lt;int, std::string&gt;&amp; map, int key) {\n    auto it = map.find(key);\n    if (it != map.end()) {\n        const std::string&amp; value = it-&gt;second;\n        \/\/ \u51e6\u7406\u3092\u7d9a\u884c\n    } else {\n        \/\/ \u30a8\u30e9\u30fc\u51e6\u7406\n        throw std::out_of_range(\"Key not found\");\n    }\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-18\">\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u306e\u9632\u6b62\u7b56<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30b9\u30de\u30fc\u30c8\u30dd\u30a4\u30f3\u30bf\u306e\u6d3b\u7528\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u306e\u53ef\u80fd\u6027\u304c\u3042\u308b\u5b9f\u88c5\nclass ResourceManager {\n    std::unordered_map&lt;std::string, Resource*&gt; resources;\npublic:\n    void add_resource(const std::string&amp; name, Resource* resource) {\n        resources[name] = resource;  \/\/ \u53e4\u3044\u30ea\u30bd\u30fc\u30b9\u304c\u30ea\u30fc\u30af\u3059\u308b\u53ef\u80fd\u6027\n    }\n    ~ResourceManager() {\n        for (auto&amp; pair : resources) {\n            delete pair.second;  \/\/ \u4f8b\u5916\u304c\u767a\u751f\u3059\u308b\u3068\u6b8b\u308a\u306e\u30ea\u30bd\u30fc\u30b9\u304c\u30ea\u30fc\u30af\u3059\u308b\n        }\n    }\n};\n\n\/\/ \u5b89\u5168\u306a\u5b9f\u88c5\nclass ResourceManager {\n    std::unordered_map&lt;std::string, std::unique_ptr&lt;Resource&gt;&gt; resources;\npublic:\n    void add_resource(const std::string&amp; name, std::unique_ptr&lt;Resource&gt; resource) {\n        resources[name] = std::move(resource);  \/\/ \u81ea\u52d5\u7684\u306b\u53e4\u3044\u30ea\u30bd\u30fc\u30b9\u3092\u89e3\u653e\n    }\n    \/\/ \u30c7\u30b9\u30c8\u30e9\u30af\u30bf\u306f\u81ea\u52d5\u7684\u306b\u5168\u3066\u306e\u30ea\u30bd\u30fc\u30b9\u3092\u89e3\u653e\n};<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf\u306e\u76e3\u8996\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">class MemoryMonitor {\n    size_t max_memory_usage = 0;\n    std::unordered_map&lt;void*, size_t&gt; allocations;\n\npublic:\n    void track_allocation(void* ptr, size_t size) {\n        allocations[ptr] = size;\n        size_t current_usage = get_total_memory_usage();\n        max_memory_usage = std::max(max_memory_usage, current_usage);\n    }\n\n    void track_deallocation(void* ptr) {\n        allocations.erase(ptr);\n    }\n\n    size_t get_total_memory_usage() const {\n        size_t total = 0;\n        for (const auto&amp; [ptr, size] : allocations) {\n            total += size;\n        }\n        return total;\n    }\n\n    void print_memory_stats() const {\n        std::cout &lt;&lt; \"\u73fe\u5728\u306e\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf: \" &lt;&lt; get_total_memory_usage() &lt;&lt; \" bytes\\n\";\n        std::cout &lt;&lt; \"\u6700\u5927\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf: \" &lt;&lt; max_memory_usage &lt;&lt; \" bytes\\n\";\n        std::cout &lt;&lt; \"\u8ffd\u8de1\u4e2d\u306e\u5272\u308a\u5f53\u3066\u6570: \" &lt;&lt; allocations.size() &lt;&lt; \"\\n\";\n    }\n};<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-19\">\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u4f4e\u4e0b\u306e\u539f\u56e0\u7279\u5b9a\u3068\u6539\u5584<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30d7\u30ed\u30d5\u30a1\u30a4\u30ea\u30f3\u30b0\u30c4\u30fc\u30eb\u306e\u6d3b\u7528\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">class PerformanceProfiler {\n    using Clock = std::chrono::high_resolution_clock;\n    using TimePoint = Clock::time_point;\n\n    std::unordered_map&lt;std::string, std::vector&lt;double&gt;&gt; timings;\n\npublic:\n    class ScopedTimer {\n        std::string operation;\n        TimePoint start;\n        PerformanceProfiler&amp; profiler;\n\n    public:\n        ScopedTimer(const std::string&amp; op, PerformanceProfiler&amp; prof)\n            : operation(op), start(Clock::now()), profiler(prof) {}\n\n        ~ScopedTimer() {\n            auto duration = std::chrono::duration&lt;double, std::milli&gt;(\n                Clock::now() - start).count();\n            profiler.add_timing(operation, duration);\n        }\n    };\n\n    void add_timing(const std::string&amp; operation, double duration) {\n        timings[operation].push_back(duration);\n    }\n\n    void print_stats() const {\n        for (const auto&amp; [operation, durations] : timings) {\n            double average = std::accumulate(durations.begin(), \n                                          durations.end(), 0.0) \/ durations.size();\n            double max = *std::max_element(durations.begin(), durations.end());\n            double min = *std::min_element(durations.begin(), durations.end());\n\n            std::cout &lt;&lt; operation &lt;&lt; \" \u7d71\u8a08:\\n\"\n                      &lt;&lt; \"  \u5e73\u5747\u6642\u9593: \" &lt;&lt; average &lt;&lt; \"ms\\n\"\n                      &lt;&lt; \"  \u6700\u5927\u6642\u9593: \" &lt;&lt; max &lt;&lt; \"ms\\n\"\n                      &lt;&lt; \"  \u6700\u5c0f\u6642\u9593: \" &lt;&lt; min &lt;&lt; \"ms\\n\"\n                      &lt;&lt; \"  \u30b5\u30f3\u30d7\u30eb\u6570: \" &lt;&lt; durations.size() &lt;&lt; \"\\n\\n\";\n        }\n    }\n};\n\n\/\/ \u4f7f\u7528\u4f8b\nvoid profile_operations() {\n    PerformanceProfiler profiler;\n    std::unordered_map&lt;int, std::string&gt; test_map;\n\n    {\n        PerformanceProfiler::ScopedTimer timer(\"insertion\", profiler);\n        for (int i = 0; i &lt; 10000; ++i) {\n            test_map[i] = std::to_string(i);\n        }\n    }\n\n    {\n        PerformanceProfiler::ScopedTimer timer(\"lookup\", profiler);\n        for (int i = 0; i &lt; 10000; ++i) {\n            auto it = test_map.find(i);\n        }\n    }\n\n    profiler.print_stats();\n}<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6539\u5584\u306e\u30c1\u30a7\u30c3\u30af\u30ea\u30b9\u30c8\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">class PerformanceChecker {\npublic:\n    static void analyze_map(const std::unordered_map&lt;int, std::string&gt;&amp; map) {\n        \/\/ \u8ca0\u8377\u7387\u306e\u78ba\u8a8d\n        float load_factor = map.load_factor();\n        float max_load_factor = map.max_load_factor();\n\n        std::cout &lt;&lt; \"\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u5206\u6790\u7d50\u679c:\\n\";\n        std::cout &lt;&lt; \"\u73fe\u5728\u306e\u8ca0\u8377\u7387: \" &lt;&lt; load_factor &lt;&lt; \"\\n\";\n        std::cout &lt;&lt; \"\u6700\u5927\u8ca0\u8377\u7387: \" &lt;&lt; max_load_factor &lt;&lt; \"\\n\";\n\n        \/\/ \u30d0\u30b1\u30c3\u30c8\u5206\u5e03\u306e\u5206\u6790\n        size_t empty_buckets = 0;\n        size_t max_bucket_size = 0;\n        size_t total_elements = 0;\n\n        for (size_t i = 0; i &lt; map.bucket_count(); ++i) {\n            size_t bucket_size = map.bucket_size(i);\n            if (bucket_size == 0) ++empty_buckets;\n            max_bucket_size = std::max(max_bucket_size, bucket_size);\n            total_elements += bucket_size;\n        }\n\n        std::cout &lt;&lt; \"\u7dcf\u30d0\u30b1\u30c3\u30c8\u6570: \" &lt;&lt; map.bucket_count() &lt;&lt; \"\\n\";\n        std::cout &lt;&lt; \"\u7a7a\u306e\u30d0\u30b1\u30c3\u30c8\u6570: \" &lt;&lt; empty_buckets &lt;&lt; \"\\n\";\n        std::cout &lt;&lt; \"\u6700\u5927\u30d0\u30b1\u30c3\u30c8\u30b5\u30a4\u30ba: \" &lt;&lt; max_bucket_size &lt;&lt; \"\\n\";\n        std::cout &lt;&lt; \"\u5e73\u5747\u30d0\u30b1\u30c3\u30c8\u30b5\u30a4\u30ba: \" \n                  &lt;&lt; static_cast&lt;float&gt;(total_elements) \/ map.bucket_count() &lt;&lt; \"\\n\";\n    }\n};<\/pre>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u30c4\u30fc\u30eb\u3068\u6280\u6cd5\u3092\u6d3b\u7528\u3059\u308b\u3053\u3068\u3067\u3001unordered_map\u3092\u4f7f\u7528\u3059\u308b\u969b\u306e\u4e00\u822c\u7684\u306a\u554f\u984c\u3092\u52b9\u679c\u7684\u306b\u7279\u5b9a\u3057\u3001\u89e3\u6c7a\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u6b21\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u3055\u3089\u306a\u308b\u5b66\u7fd2\u3068\u767a\u5c55\u306e\u305f\u3081\u306e\u65b9\u5411\u6027\u306b\u3064\u3044\u3066\u8aac\u660e\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-20\">\u6b21\u306e\u30b9\u30c6\u30c3\u30d7<\/h2>\n\n\n\n<p>unordered_map\u306e\u57fa\u672c\u7684\u306a\u4f7f\u3044\u65b9\u3068\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6700\u9069\u5316\u306b\u3064\u3044\u3066\u7406\u89e3\u3092\u6df1\u3081\u305f\u3068\u3053\u308d\u3067\u3001\u3055\u3089\u306a\u308b\u30b9\u30ad\u30eb\u30a2\u30c3\u30d7\u306e\u305f\u3081\u306e\u9053\u7b4b\u3092\u793a\u3057\u3066\u3044\u304d\u307e\u3057\u3087\u3046\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-21\">\u3088\u308a\u9ad8\u5ea6\u306a\u4f7f\u7528\u65b9\u6cd5\u306e\u5b66\u7fd2<\/h3>\n\n\n\n<p>unordered_map\u306e\u9ad8\u5ea6\u306a\u6d3b\u7528\u306b\u306f\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u767a\u5c55\u7684\u306a\u30c8\u30d4\u30c3\u30af\u306e\u7406\u89e3\u304c\u91cd\u8981\u3067\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30ab\u30b9\u30bf\u30e0\u30a2\u30ed\u30b1\u30fc\u30bf\u306e\u5b9f\u88c5<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u30ab\u30b9\u30bf\u30e0\u30a2\u30ed\u30b1\u30fc\u30bf\u306e\u4f8b\ntemplate&lt;typename T&gt;\nclass CustomAllocator {\npublic:\n    using value_type = T;\n\n    CustomAllocator() noexcept {}\n\n    template&lt;typename U&gt;\n    CustomAllocator(const CustomAllocator&lt;U&gt;&amp;) noexcept {}\n\n    T* allocate(std::size_t n) {\n        \/\/ \u30e1\u30e2\u30ea\u30d7\u30fc\u30eb\u304b\u3089\u306e\u5272\u308a\u5f53\u3066\u306a\u3069\u3001\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3055\u308c\u305f\u5b9f\u88c5\n        return static_cast&lt;T*&gt;(::operator new(n * sizeof(T)));\n    }\n\n    void deallocate(T* p, std::size_t) noexcept {\n        ::operator delete(p);\n    }\n};\n\n\/\/ \u30ab\u30b9\u30bf\u30e0\u30a2\u30ed\u30b1\u30fc\u30bf\u3092\u4f7f\u7528\u3057\u305funordered_map\nstd::unordered_map&lt;\n    std::string,\n    int,\n    std::hash&lt;std::string&gt;,\n    std::equal_to&lt;std::string&gt;,\n    CustomAllocator&lt;std::pair&lt;const std::string, int&gt;&gt;\n&gt; custom_map;<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u4e26\u884c\u51e6\u7406\u5bfe\u5fdc<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u8aad\u307f\u53d6\u308a\u5c02\u7528\u64cd\u4f5c\u306e\u4e26\u5217\u5316\u4f8b\nclass ThreadSafeUnorderedMap {\nprivate:\n    mutable std::shared_mutex mutex_;\n    std::unordered_map&lt;std::string, int&gt; map_;\n\npublic:\n    \/\/ \u8aad\u307f\u53d6\u308a\u64cd\u4f5c\uff08\u8907\u6570\u30b9\u30ec\u30c3\u30c9\u3067\u540c\u6642\u5b9f\u884c\u53ef\u80fd\uff09\n    bool contains(const std::string&amp; key) const {\n        std::shared_lock lock(mutex_);\n        return map_.contains(key);\n    }\n\n    \/\/ \u66f8\u304d\u8fbc\u307f\u64cd\u4f5c\uff08\u6392\u4ed6\u7684\u30ed\u30c3\u30af\uff09\n    void insert(const std::string&amp; key, int value) {\n        std::unique_lock lock(mutex_);\n        map_.insert_or_assign(key, value);\n    }\n};<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>\u7279\u6b8a\u5316\u3055\u308c\u305f\u30cf\u30c3\u30b7\u30e5\u95a2\u6570\u306e\u5b9f\u88c5<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u30ab\u30b9\u30bf\u30e0\u578b\u306e\u30cf\u30c3\u30b7\u30e5\u95a2\u6570\u4f8b\nstruct CustomType {\n    int id;\n    std::string name;\n};\n\nnamespace std {\n    template&lt;&gt;\n    struct hash&lt;CustomType&gt; {\n        size_t operator()(const CustomType&amp; obj) const {\n            \/\/ \u8907\u5408\u30cf\u30c3\u30b7\u30e5\u306e\u5b9f\u88c5\n            return hash&lt;int&gt;()(obj.id) ^ \n                   (hash&lt;string&gt;()(obj.name) &lt;&lt; 1);\n        }\n    };\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-22\">\u95a2\u9023\u3059\u308bSTL\u30b3\u30f3\u30c6\u30ca\u306e\u5b66\u7fd2<\/h3>\n\n\n\n<p>unordered_map\u306e\u7406\u89e3\u3092\u6df1\u3081\u305f\u5f8c\u306f\u3001\u4ee5\u4e0b\u306eSTL\u30b3\u30f3\u30c6\u30ca\u306b\u3064\u3044\u3066\u3082\u5b66\u7fd2\u3092\u9032\u3081\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>std::map<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u9806\u5e8f\u4ed8\u304d\u9023\u60f3\u914d\u5217<\/li>\n\n\n\n<li>\u8d64\u9ed2\u6728\u306b\u3088\u308b\u5b9f\u88c5<\/li>\n\n\n\n<li>\u30ad\u30fc\u306b\u3088\u308b\u81ea\u52d5\u30bd\u30fc\u30c8\u6a5f\u80fd<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>std::unordered_multimap<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u91cd\u8907\u30ad\u30fc\u3092\u8a31\u5bb9<\/li>\n\n\n\n<li>\u540c\u4e00\u30ad\u30fc\u306b\u5bfe\u3059\u308b\u8907\u6570\u306e\u5024\u306e\u7ba1\u7406<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>std::flat_map<\/strong> (C++23\u4ee5\u964d)<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u914d\u5217\u30d9\u30fc\u30b9\u306e\u5b9f\u88c5<\/li>\n\n\n\n<li>\u30ad\u30e3\u30c3\u30b7\u30e5\u52b9\u7387\u306e\u9ad8\u3044\u64cd\u4f5c<\/li>\n<\/ul>\n\n\n\n<p>\u5b9f\u8df5\u7684\u306a\u5b66\u7fd2\u306e\u305f\u3081\u306e\u30b9\u30c6\u30c3\u30d7\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30d9\u30f3\u30c1\u30de\u30fc\u30af\u30c6\u30b9\u30c8\u306e\u4f5c\u6210<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u7570\u306a\u308b\u30b3\u30f3\u30c6\u30ca\u9593\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6bd4\u8f03<\/li>\n\n\n\n<li>\u69d8\u3005\u306a\u30e6\u30fc\u30b9\u30b1\u30fc\u30b9\u3067\u306e\u6027\u80fd\u6e2c\u5b9a<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u5b9f\u969b\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306e\u6d3b\u7528<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5c0f\u898f\u6a21\u306a\u30e6\u30fc\u30c6\u30a3\u30ea\u30c6\u30a3\u306e\u958b\u767a<\/li>\n\n\n\n<li>\u65e2\u5b58\u30b3\u30fc\u30c9\u306e\u30ea\u30d5\u30a1\u30af\u30bf\u30ea\u30f3\u30b0<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30b3\u30fc\u30c9\u54c1\u8cea\u306e\u5411\u4e0a<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5358\u4f53\u30c6\u30b9\u30c8\u306e\u4f5c\u6210<\/li>\n\n\n\n<li>\u30b3\u30fc\u30c9\u30ec\u30d3\u30e5\u30fc\u3067\u306e\u6307\u6458\u4e8b\u9805\u306e\u53ce\u96c6<\/li>\n<\/ul>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u5b66\u7fd2\u3092\u901a\u3058\u3066\u3001\u3088\u308a\u52b9\u7387\u7684\u3067\u4fe1\u983c\u6027\u306e\u9ad8\u3044C++\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u958b\u767a\u30b9\u30ad\u30eb\u3092\u8eab\u306b\u3064\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u307e\u305f\u3001STL\u306e\u6df1\u3044\u7406\u89e3\u306f\u3001\u3088\u308a\u8907\u96d1\u306a\u30c7\u30fc\u30bf\u69cb\u9020\u3084\u9ad8\u5ea6\u306a\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u5b9f\u88c5\u306b\u3082\u5f79\u7acb\u3064\u3067\u3057\u3087\u3046\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Warning: Undefined array key &#8220;is_admin&#8221; in \/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/ &#8230; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[],"class_list":{"0":"post-2052","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-cpp","7":"nothumb"},"_links":{"self":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/2052","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2052"}],"version-history":[{"count":2,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/2052\/revisions"}],"predecessor-version":[{"id":2054,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/2052\/revisions\/2054"}],"wp:attachment":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2052"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2052"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2052"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}