{"id":462655,"date":"2025-06-10T09:46:27","date_gmt":"2025-06-10T09:46:27","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=462655"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=462655","title":{"rendered":"<span>\u041f\u043b\u043e\u0441\u043a\u0438\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0432 C++23<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u041d\u043e\u0432\u044b\u0439 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442 C++, C++23, \u0432\u043f\u0435\u0440\u0432\u044b\u0435 \u0441 C++11 \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u043b \u0432\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u0443\u044e \u043b\u0438\u043d\u0435\u0439\u043a\u0443 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432: \u043f\u043e\u043c\u0438\u043c\u043e \u0437\u043d\u0430\u043a\u043e\u043c\u044b\u0445 <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/container\/array.html\" rel=\"noopener noreferrer nofollow\"><code>array<\/code><\/a>, <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/container\/vector.html\" rel=\"noopener noreferrer nofollow\"><code>vector<\/code><\/a>, <code>(unordered_)set<\/code>, <code>(unordered_)map<\/code> \u0438 \u043f\u0440\u043e\u0447\u0438\u043c \u0432 \u043d\u0435\u0435 \u0442\u0435\u043f\u0435\u0440\u044c \u0432\u0445\u043e\u0434\u044f\u0442 \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u044b\u0435 <a href=\"https:\/\/cppreference.com\/w\/cpp\/container\/flat_set.html\" rel=\"noopener noreferrer nofollow\"><code>flat_set<\/code><\/a>, <a href=\"https:\/\/cppreference.com\/w\/cpp\/container\/flat_map.html\" rel=\"noopener noreferrer nofollow\"><code>flat_map<\/code><\/a>, <a href=\"https:\/\/cppreference.com\/w\/cpp\/container\/flat_multiset.html\" rel=\"noopener noreferrer nofollow\"><code>flat_multiset<\/code><\/a> \u0438 <a href=\"https:\/\/cppreference.com\/w\/cpp\/container\/flat_multimap.html\" rel=\"noopener noreferrer nofollow\"><code>flat_multimap<\/code><\/a>. \u041e\u0442\u0432\u0435\u0442\u0438\u043c \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441\u044b, \u0447\u0442\u043e \u044d\u0442\u043e \u0437\u0430 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b, \u043a\u043e\u0433\u0434\u0430 \u043e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u044b, \u0441\u0440\u0430\u0432\u043d\u0438\u043c \u0434\u0438\u0437\u0430\u0439\u043d \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u00ab\u043f\u043b\u043e\u0441\u043a\u0438\u0445\u00bb \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 \u0441 \u0434\u0438\u0437\u0430\u0439\u043d\u043e\u043c \u043f\u043b\u043e\u0441\u043a\u0438\u0445 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 \u0438\u0437 <a href=\"https:\/\/live.boost.org\/doc\/libs\/1_88_0\/doc\/html\/container\/non_standard_containers.html#container.non_standard_containers.flat_xxx\" rel=\"noopener noreferrer nofollow\">Boost<\/a> \u0438 <a href=\"https:\/\/www.etlcpp.com\/flat_map.html\" rel=\"noopener noreferrer nofollow\">ETL<\/a> \u0438, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0451\u043c \u0437\u0430\u043c\u0435\u0440\u044b \u0438 \u0441\u0440\u0430\u0432\u043d\u0438\u043c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c <code>flat_ <\/code>\u0438 \u043d\u0435 <code>flat_<\/code> \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432.<\/p>\n<p>\u0412\u0430\u0436\u043d\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0432\u0441\u0435 \u044d\u0442\u0438 \u00ab\u043f\u043b\u043e\u0441\u043a\u0438\u0435\u00bb \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0434\u0430\u0436\u0435 \u043d\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0432 \u0441\u0442\u0440\u043e\u0433\u043e\u043c \u0441\u043c\u044b\u0441\u043b\u0435, \u0430 \u043b\u0438\u0448\u044c <em>\u0430\u0434\u0430\u043f\u0442\u0435\u0440\u044b \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432: <\/em>\u043f\u043e\u0434\u043e\u0431\u043d\u043e <a href=\"https:\/\/cppreference.com\/w\/cpp\/container\/stack.html\" rel=\"noopener noreferrer nofollow\"><code>stack<\/code><\/a> \u0438 <a href=\"https:\/\/cppreference.com\/w\/cpp\/container\/queue.html\" rel=\"noopener noreferrer nofollow\"><code>queue<\/code><\/a> \u043e\u043d\u0438 \u043d\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0442 \u043a\u0430\u043a\u0443\u044e-\u0442\u043e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445, \u0430 \u043b\u0438\u0448\u044c \u0432\u0432\u043e\u0434\u044f\u0442 \u0441\u0432\u043e\u0439 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u043f\u043e\u0432\u0435\u0440\u0445 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c\u043e\u0439 \u0434\u0440\u0443\u0433\u0438\u043c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u043c.<\/p>\n<p>\u0418 \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043d\u0430\u0447\u0430\u0442\u044c \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0438\u0435 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437 \u00ab\u043f\u043b\u043e\u0441\u043a\u0438\u0445\u00bb\u00a0\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 \u043f\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 \u0432\u0430\u0436\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u044c \u043e\u0434\u043d\u0443 \u043e\u0431\u0449\u0443\u044e \u0434\u043b\u044f \u043d\u0438\u0445 \u0432\u0441\u0435\u0445 \u0432\u0435\u0449\u044c: \u043e\u043d\u0438 \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u00bb\u043f\u043b\u043e\u0441\u043a\u0438\u043c\u0438\u00bb, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u043d\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043b\u043e\u0441\u043a\u0438\u0435 \u2014 \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c \u0443 \u043d\u0438\u0445 \u043b\u0435\u0436\u0430\u0442 <strong>\u043d\u0435 <\/strong><a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%9A%D1%80%D0%B0%D1%81%D0%BD%D0%BE-%D1%87%D1%91%D1%80%D0%BD%D0%BE%D0%B5_%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D0%BE\" rel=\"noopener noreferrer nofollow\"><strong>\u043a\u0440\u0430\u0441\u043d\u043e-\u0447\u0435\u0440\u043d\u044b\u0435<\/strong><\/a><strong> (\u0438\u043b\u0438 <\/strong><a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%90%D0%92%D0%9B-%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D0%BE\" rel=\"noopener noreferrer nofollow\"><strong>AVL<\/strong><\/a><strong>) \u0434\u0435\u0440\u0435\u0432\u044c\u044f<\/strong>, \u043a\u0430\u043a \u0443 <code>std::(multi)set<\/code> \u0438 <code>std::(multi)map<\/code> \u0438 <strong>\u043d\u0435 \u0445\u044d\u0448-\u0442\u0430\u0431\u043b\u0438\u0446\u044b<\/strong>, \u043a\u0430\u043a \u0443 <code>std::unordered_(multi)set<\/code> \u0438 <code>std::unordered_(multi)map<\/code>, \u0430 <strong>\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b<\/strong>.<\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u0430\u043a \u0431\u044b \u0432\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043b\u0438 <code>set<\/code>, \u0435\u0441\u043b\u0438 \u0432\u044b \u0431\u044b \u043d\u0435 \u0437\u043d\u0430\u043b\u0438 \u043e \u0432\u044b\u0448\u0435\u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u044b\u0445 \u0434\u0435\u0440\u0435\u0432\u044c\u044f\u0445? \u041b\u0435\u0433\u043a\u043e: \u0431\u0435\u0440\u0435\u043c <a href=\"https:\/\/cppreference.com\/w\/cpp\/container\/vector.html\" rel=\"noopener noreferrer nofollow\"><code>std::vector<\/code><\/a> \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u043c <code>insert<\/code> \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u043e\u043d \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u043b \u044d\u0442\u043e\u0442 \u0432\u0435\u043a\u0442\u043e\u0440 \u0432 \u043e\u0442\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438. \u0422\u043e \u0435\u0441\u0442\u044c, \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a:<\/p>\n<pre><code class=\"cpp\">template &lt;typename ...&gt; std::pair&lt;iterator, bool&gt; flat_set&lt;...&gt;::insert(const K&amp; value) {   \/\/ \u0418\u0449\u0435\u043c \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435 value \u0438\u043b\u0438 \u0436\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0435\u0435 \u043c\u0435\u0441\u0442\u043e \u0434\u043b\u044f \u0435\u0433\u043e \u0432\u0441\u0442\u0430\u0432\u043a\u0438   auto it = std::lower_bound(     vec.begin(), vec.end(), value   ); \/\/ \u0411\u0438\u043d\u0430\u0440\u043d\u044b\u0439 \u043f\u043e\u0438\u0441\u043a, O(log N)   \/\/ \u0415\u0441\u043b\u0438 \u043d\u0435 \u043d\u0430\u0448\u043b\u0438 \u0441\u043e\u0432\u0441\u0435\u043c \u0438\u043b\u0438 \u043d\u0430\u0448\u043b\u0438 \u043d\u0435 \u0442\u043e, \u0442\u043e \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c   if (it == vec.end() || value &lt; *it) {     vec.insert(       it, std::move(value)     ); \/\/ O(N) \u0438 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u043b\u043e\u043a\u0430\u0446\u0438\u044f :(     return std::pair&lt;iterator, bool&gt;{std::move(it), true};   }   \/\/ \u0418\u043d\u0430\u0447\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u043e\u0435   return std::pair&lt;iterator, bool&gt;{std::move(it), false}; }<\/code><\/pre>\n<p>\u0410 <code>find()<\/code> \u0432 \u0442\u0430\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0439 \u043f\u043e\u0438\u0441\u043a (\u0441\u043e \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e <img decoding=\"async\" class=\"formula inline\" source=\"O(log\\ N)\" alt=\"O(log\\ N)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/97\/972\/9728b550189565157dbb9bf2f88c1fa4.svg\" width=\"auto\" height=\"auto\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/97\/972\/9728b550189565157dbb9bf2f88c1fa4.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/97\/972\/9728b550189565157dbb9bf2f88c1fa4.svg 781w\" loading=\"lazy\" decode=\"async\"\/>). \u0422\u0430\u043a \u0432\u043e\u0442, \u0442\u0430\u043a \u0436\u0435 (\u043d\u043e \u0431\u043e\u043b\u0435\u0435 \u043e\u0431\u043e\u0431\u0449\u0435\u043d\u043d\u043e) \u0443\u0441\u0442\u0440\u043e\u0435\u043d \u0438 <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/container\/flat_set.html\" rel=\"noopener noreferrer nofollow\"><code>flat_set<\/code><\/a>, \u0438 <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/container\/flat_multiset.html\" rel=\"noopener noreferrer nofollow\"><code>flat_multiset<\/code><\/a> (\u0432 \u0435\u0433\u043e \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u043c\u0435\u0441\u0442\u043e <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/algorithm\/lower_bound.html\" rel=\"noopener noreferrer nofollow\"><code>lower_bound<\/code><\/a> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/algorithm\/upper_bound.html\" rel=\"noopener noreferrer nofollow\"><code>upper_bound<\/code><\/a> \u0438 \u043d\u043e\u0432\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0431\u0435\u0437\u0443\u0441\u043b\u043e\u0432\u043d\u043e), \u0438 <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/container\/flat_map.html\" rel=\"noopener noreferrer nofollow\"><code>flat_map<\/code><\/a> \u0438 <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/container\/flat_multimap.html\" rel=\"noopener noreferrer nofollow\"><code>flat_multimap<\/code><\/a> (\u043d\u043e \u0432 \u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u0435 \u043c\u044b \u043e\u043f\u0435\u0440\u0438\u0440\u0443\u0435\u043c \u0434\u0432\u0443\u043c\u044f \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u043c\u0438: \u043e\u0434\u043d\u0438\u043c \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043a\u043b\u044e\u0447\u0435\u0439, \u0434\u0440\u0443\u0433\u0438\u043c \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439).<\/p>\n<p>\u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e, \u0434\u0430\u0436\u0435 \u043d\u0435 \u043c\u0435\u043d\u044f\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438, \u0432\u043c\u0435\u0441\u0442\u043e <a href=\"https:\/\/cppreference.com\/w\/cpp\/container\/vector.html\" rel=\"noopener noreferrer nofollow\"><code>std::vector<\/code><\/a> \u043c\u044b \u043c\u043e\u0433\u043b\u0438 \u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <a href=\"https:\/\/cppreference.com\/w\/cpp\/container\/deque.html\" rel=\"noopener noreferrer nofollow\"><code>std::deque<\/code><\/a>. \u0412 \u043e\u0431\u0449\u0435\u043c, \u043b\u044e\u0431\u043e\u0439 <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/named_req\/SequenceContainer\" rel=\"noopener noreferrer nofollow\"><strong>\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439<\/strong><\/a> \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440. \u0418\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043b\u043e\u0441\u043a\u0438\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0438 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430\u043c\u0438: \u0440\u0430\u0437\u043d\u044b\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c \u043c\u043e\u0433\u0443\u0442 \u0438\u043c\u0435\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u0435 \u043f\u043b\u044e\u0441\u044b \u0438 \u043c\u0438\u043d\u0443\u0441\u044b, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435\u0442 \u043f\u0440\u0438\u0447\u0438\u043d \u0436\u0435\u0441\u0442\u043a\u043e \u0437\u0430\u0432\u044f\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0438\u0437 \u043d\u0438\u0445. \u0418 \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438\u0445 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0432\u043e\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"cpp\">template&lt;     class Key,     class Compare = std::less&lt;Key&gt;,     class KeyContainer = std::vector&lt;Key&gt; \/\/ \u041a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0434\u043b\u044f \u043a\u043b\u044e\u0447\u0435\u0439 &gt; class flat_set; \/\/ \u0422\u043e\u0447\u043d\u043e \u0442\u0430\u043a\u043e\u0435 \u0436\u0435 \u0434\u043b\u044f flat_multiset  template&lt;     class Key,     class T,     class Compare = std::less&lt;Key&gt;,     class KeyContainer = std::vector&lt;Key&gt;, \/\/ \u041a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0434\u043b\u044f \u043a\u043b\u044e\u0447\u0435\u0439     class MappedContainer = std::vector&lt;T&gt; \/\/ \u041a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0434\u043b\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 &gt; class flat_map; \/\/ \u0422\u043e\u0447\u043d\u043e \u0442\u0430\u043a\u043e\u0435 \u0436\u0435 \u0434\u043b\u044f flat_multimap<\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u0436\u0435 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c \u0430\u0441\u0438\u043c\u043f\u0442\u043e\u0442\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0432 \u043f\u043b\u043e\u0441\u043a\u0438\u0445 \u0438 \u043d\u0435 \u043f\u043b\u043e\u0441\u043a\u0438\u0445 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u0445, \u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td data-colwidth=\"105\" width=\"105\">\n<p align=\"left\">\n<\/td>\n<td>\n<p align=\"left\">std::unordered_(multi)set\/map<\/p>\n<\/td>\n<td data-colwidth=\"202\" width=\"202\">\n<p align=\"left\">std::(multi)set\/map<\/p>\n<\/td>\n<td>\n<p align=\"left\">std::flat_(multi)set\/map<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"105\" width=\"105\">\n<p align=\"left\">insert(value)<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0412 \u0441\u0440\u0435\u0434\u043d\u0435\u043c <img decoding=\"async\" class=\"formula inline\" source=\"O(1)\" alt=\"O(1)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/929\/5df\/7a6\/9295df7a67aa7cbc2b7582c170f9f1f2.svg\" width=\"42\" height=\"24\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/929\/5df\/7a6\/9295df7a67aa7cbc2b7582c170f9f1f2.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/929\/5df\/7a6\/9295df7a67aa7cbc2b7582c170f9f1f2.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<\/td>\n<td data-colwidth=\"202\" width=\"202\">\n<p align=\"left\"><img decoding=\"async\" class=\"formula inline\" source=\"O(log\\ N)\" alt=\"O(log\\ N)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/3b4\/c8b\/0d7\/3b4c8b0d7e386a073ca5c6eac9bee641.svg\" width=\"81\" height=\"24\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/3b4\/c8b\/0d7\/3b4c8b0d7e386a073ca5c6eac9bee641.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/3b4\/c8b\/0d7\/3b4c8b0d7e386a073ca5c6eac9bee641.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<\/td>\n<td>\n<p align=\"left\"><img decoding=\"async\" class=\"formula inline\" source=\"O(N)\" alt=\"O(N)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/701\/d17\/131\/701d17131d611df8df6133f6b27ba8a8.svg\" width=\"50\" height=\"24\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/701\/d17\/131\/701d17131d611df8df6133f6b27ba8a8.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/701\/d17\/131\/701d17131d611df8df6133f6b27ba8a8.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"105\" width=\"105\">\n<p align=\"left\">erase(value)<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0412 \u0441\u0440\u0435\u0434\u043d\u0435\u043c <img decoding=\"async\" class=\"formula inline\" source=\"O(1)\" alt=\"O(1)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e6b\/2df\/4e8\/e6b2df4e8a03f11125cc2640ef6debe4.svg\" width=\"42\" height=\"24\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e6b\/2df\/4e8\/e6b2df4e8a03f11125cc2640ef6debe4.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e6b\/2df\/4e8\/e6b2df4e8a03f11125cc2640ef6debe4.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<\/td>\n<td data-colwidth=\"202\" width=\"202\">\n<p align=\"left\"><img decoding=\"async\" class=\"formula inline\" source=\"O(log\\ N)\" alt=\"O(log\\ N)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a43\/e04\/da0\/a43e04da0e4e249087775ae162405f69.svg\" width=\"81\" height=\"24\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a43\/e04\/da0\/a43e04da0e4e249087775ae162405f69.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a43\/e04\/da0\/a43e04da0e4e249087775ae162405f69.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<\/td>\n<td>\n<p align=\"left\"><img decoding=\"async\" class=\"formula inline\" source=\"O(N)\" alt=\"O(N)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/006\/c2e\/306\/006c2e306c31c49a740b7f1e3742bbea.svg\" width=\"50\" height=\"24\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/006\/c2e\/306\/006c2e306c31c49a740b7f1e3742bbea.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/006\/c2e\/306\/006c2e306c31c49a740b7f1e3742bbea.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"105\" width=\"105\">\n<p align=\"left\">find(value)<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0412 \u0441\u0440\u0435\u0434\u043d\u0435\u043c <img decoding=\"async\" class=\"formula inline\" source=\"O(1)\" alt=\"O(1)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e15\/335\/d60\/e15335d600f8a117dc8d2b884afbf194.svg\" width=\"42\" height=\"24\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e15\/335\/d60\/e15335d600f8a117dc8d2b884afbf194.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e15\/335\/d60\/e15335d600f8a117dc8d2b884afbf194.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<\/td>\n<td data-colwidth=\"202\" width=\"202\">\n<p align=\"left\"><img decoding=\"async\" class=\"formula inline\" source=\"O(log\\ N)\" alt=\"O(log\\ N)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/8ba\/46a\/c0b\/8ba46ac0b7fd12d4eae6e85c77110f6f.svg\" width=\"81\" height=\"24\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/8ba\/46a\/c0b\/8ba46ac0b7fd12d4eae6e85c77110f6f.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/8ba\/46a\/c0b\/8ba46ac0b7fd12d4eae6e85c77110f6f.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<\/td>\n<td>\n<p align=\"left\"><img decoding=\"async\" class=\"formula inline\" source=\"O(log\\ N)\" alt=\"O(log\\ N)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/76f\/e6c\/48c\/76fe6c48c9ee45afaf5304f62fb891b7.svg\" width=\"81\" height=\"24\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/76f\/e6c\/48c\/76fe6c48c9ee45afaf5304f62fb891b7.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/76f\/e6c\/48c\/76fe6c48c9ee45afaf5304f62fb891b7.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435 \u043a \u0442\u0430\u0431\u043b\u0438\u0446\u0435<\/summary>\n<div class=\"spoiler__content\">\n<p>\u0412 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0432\u044b\u0448\u0435, \u0434\u043b\u044f \u043f\u043e\u043b\u043d\u043e\u0442\u044b \u043a\u0430\u0440\u0442\u0438\u043d\u044b, \u0431\u044b\u043b\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0432\u0441\u0435\u0445 \u0438\u043c\u0435\u044e\u0449\u0438\u0445\u0441\u044f \u0432 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435 \u0430\u0441\u0441\u043e\u0446\u0438\u0430\u0442\u0438\u0432\u043d\u044b\u0445 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432.<\/p>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e \u0434\u0430\u043b\u044c\u0448\u0435 \u0432 \u0442\u0435\u043a\u0441\u0442\u0435, \u0433\u043b\u0430\u0432\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0431\u0443\u0434\u0443\u0442 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043b\u0438\u0448\u044c \u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0435\u043d\u043d\u044b\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b: <code>std::(multi)set\/map<\/code> \u0438 \u043d\u043e\u0432\u044b\u0435 \u043f\u043b\u043e\u0441\u043a\u0438\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b (\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0442\u0430\u043a\u0436\u0435 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0435\u043d\u043d\u044b\u043c\u0438) <code>std::flat_(multi)set\/map<\/code>.<\/p>\n<p>\u041e \u043d\u0435\u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0435\u043d\u043d\u044b\u0445 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u0445 \u2014 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u0445, \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u0445\u044d\u0448-\u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0445, \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c\u0441\u044f \u043d\u0435 \u0431\u0443\u0434\u0435\u0442, \u0442\u0430\u043a \u043a\u0430\u043a \u043d\u0435\u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0435\u043d\u043d\u044b\u0435 \u0438 \u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0435\u043d\u043d\u044b\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u2014 \u0440\u0430\u0437\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044f \u044f\u0433\u043e\u0434\u044b. \u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u0435\u043d \u043f\u043e\u0440\u044f\u0434\u043e\u043a, \u0442\u043e \u0432\u0430\u043c, \u0437\u0430 \u043e\u0447\u0435\u043d\u044c \u0440\u0435\u0434\u043a\u0438\u043c\u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f\u043c\u0438 (\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u043c\u0435\u0447\u0435\u043d\u044b \u0432 \u0437\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438), \u0438 \u043d\u0435 \u043d\u0443\u0436\u043d\u044b \u043f\u043b\u043e\u0441\u043a\u0438\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u2014 \u0445\u044d\u0448-\u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0432\u043e \u0432\u0441\u0451\u043c \u0431\u0443\u0434\u0443\u0442 \u0431\u044b\u0441\u0442\u0440\u0435\u0439.<\/p>\n<\/div>\n<\/details>\n<p>\u0410\u0441\u0438\u043c\u043f\u0442\u043e\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b, \u043c\u044b \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0432\u044b\u0438\u0433\u0440\u044b\u0432\u0430\u0435\u043c. \u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435, \u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441 <code>(multi)set<\/code> \u0438 <code>(multi)map<\/code> \u00ab\u043f\u043b\u043e\u0441\u043a\u0430\u044f\u00bb \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0438\u043c\u0435\u0435\u0442 \u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043b\u044e\u0441\u044b: <strong>\u0431\u043e\u043b\u0435\u0435 \u0431\u044b\u0441\u0442\u0440\u0443\u044e \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u044e, \u043c\u0435\u043d\u044c\u0448\u0435\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435 \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u043b\u0443\u0447\u0448\u0443\u044e \u043a\u044d\u0448-\u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c<\/strong>.<\/p>\n<p>\u041d\u043e \u0432\u0437\u0430\u043c\u0435\u043d \u043d\u0430\u0441 \u043d\u0435\u043c\u0438\u043d\u0443\u0435\u043c\u043e \u0436\u0434\u0443\u0442 <strong>\u043c\u0435\u043d\u0435\u0435 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u044b\u0435 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u044b<\/strong>, \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u044b\u0435 \u0438\u043d\u0432\u0430\u043b\u0438\u0434\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043b\u044e\u0431\u043e\u0439 \u0432\u0441\u0442\u0430\u0432\u043a\u0435 \u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0438; <strong>\u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043d\u0435-\u043a\u043e\u043f\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u0438 \u043d\u0435-\u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0435\u043c\u044b\u0445 \u0442\u0438\u043f\u043e\u0432<\/strong>; <strong>\u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u0430\u0431\u044b\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439<\/strong> (\u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u0437\u0430\u0449\u0438\u0442\u0438\u0442 \u043d\u0430\u0441 \u043e\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439 \u0432 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430\u0445 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\/\u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u043f\u0440\u0438 \u0441\u0434\u0432\u0438\u0433\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u0445\u043e\u0434\u0435 \u0432\u0441\u0442\u0430\u0432\u043a\u0438\/\u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f) \u0438 <strong>\u0431\u043e\u043b\u0435\u0435 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u044b\u0435 \u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f <\/strong>(\u043c\u0430\u043b\u043e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u043e\u0442\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0441\u0442\u044c, \u0442\u0430\u043a \u0432\u0435\u0434\u044c \u043f\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u0439 \u0432\u0441\u0442\u0430\u0432\u043a\u0435 \u0432 \u043d\u0430\u0448 \u0432\u0435\u043a\u0442\u043e\u0440 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0434\u0432\u0438\u0433\u0430\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b)<\/p>\n<p>\u0411\u043e\u043b\u0435\u0435 \u0441\u043f\u043e\u0440\u043d\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441: <strong>\u043f\u043e\u043b\u0443\u0447\u0438\u043c \u043b\u0438 \u043c\u044b \u0431\u043e\u043b\u0435\u0435 \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u043f\u043e\u0438\u0441\u043a?<\/strong> (\u0435\u0433\u043e \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u2014<img decoding=\"async\" class=\"formula inline\" source=\"O(log\\ N)\" alt=\"O(log\\ N)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/97\/972\/9728b550189565157dbb9bf2f88c1fa4.svg\" width=\"auto\" height=\"auto\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/97\/972\/9728b550189565157dbb9bf2f88c1fa4.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/97\/972\/9728b550189565157dbb9bf2f88c1fa4.svg 781w\" loading=\"lazy\" decode=\"async\"\/>\u043a\u0430\u043a \u0432 \u043f\u043b\u043e\u0441\u043a\u0438\u0445, \u0442\u0430\u043a \u0438 \u043d\u0435 \u0432 \u043f\u043b\u043e\u0441\u043a\u0438\u0445 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u0445) \u041e\u0434\u0438\u043d \u0438\u0437 \u043a\u043b\u0430\u0441\u0441\u0438\u043a\u043e\u0432 \u0421++, <a href=\"https:\/\/lafstern.org\/matt\/\" rel=\"noopener noreferrer nofollow\">Matt Austern<\/a>, \u0432 <a href=\"http:\/\/lafstern.org\/matt\/col1.pdf\" rel=\"noopener noreferrer nofollow\">\u0441\u0432\u043e\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435<\/a> (2000 \u0433\u043e\u0434) \u0437\u0430\u044f\u0432\u043b\u044f\u0435\u0442, \u0447\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043c:<\/p>\n<blockquote>\n<p><em>Both std::lower_bound and set::find take time proportional to log N, but the constants of proportionality are very different. Using g++ (&#8230;) it takes X seconds to perform a million lookups in a sorted vector&lt;double&gt; of a million elements, and almost twice as long (&#8230;) using a set. Moreover, the set uses almost three times as much memory (48 million bytes) as the vector (16.8 million).<\/em><\/p>\n<\/blockquote>\n<p>\u041d\u043e <a href=\"https:\/\/stackoverflow.com\/a\/25027750\" rel=\"noopener noreferrer nofollow\">\u0431\u043e\u043b\u0435\u0435 \u043d\u043e\u0432\u044b\u0435 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0438<\/a> (2014 \u0433\u043e\u0434; \u0432\u043f\u0440\u043e\u0447\u0435\u043c, \u043d\u0430 \u043c\u0435\u043d\u044c\u0448\u0438\u0445 \u043e\u0431\u044a\u0435\u043c\u0430\u0445 \u0434\u0430\u043d\u043d\u044b\u0445) \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0435 (<a href=\"https:\/\/live.boost.org\/doc\/libs\/1_88_0\/doc\/html\/boost_container_header_reference.html#doxygen.boost_container_header_reference.flat__map_8hpp\" rel=\"noopener noreferrer nofollow\"><code>boost::container::flat_map<\/code><\/a>, \u0438\u0441\u043a\u043b\u044e\u0447\u0430\u044f \u043e\u0434\u0438\u043d \u043d\u044e\u0430\u043d\u0441, \u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u0441\u043a\u0430\u0437\u0430\u043d\u043e \u0447\u0443\u0442\u044c \u043f\u043e\u0437\u0436\u0435, \u0438\u0434\u0435\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438 \u0443\u0441\u0442\u0440\u043e\u0435\u043d \u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/container\/flat_map.html\" rel=\"noopener noreferrer nofollow\"><code>std::flat_map<\/code><\/a>):<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f6a\/bbd\/2b7\/f6abbd2b7e33b5a79461bb68e80fed02.png\" width=\"569\" height=\"267\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/f6a\/bbd\/2b7\/f6abbd2b7e33b5a79461bb68e80fed02.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f6a\/bbd\/2b7\/f6abbd2b7e33b5a79461bb68e80fed02.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/daa\/ae7\/f5a\/daaae7f5a70733089015a06b967586a2.png\" width=\"569\" height=\"267\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/daa\/ae7\/f5a\/daaae7f5a70733089015a06b967586a2.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/daa\/ae7\/f5a\/daaae7f5a70733089015a06b967586a2.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e, \u043e\u0441\u0442\u0430\u0432\u0438\u043c \u044d\u0442\u043e\u0442 \u0432\u043e\u043f\u0440\u043e\u0441 \u043d\u0430 \u043f\u043e\u0442\u043e\u043c. \u0410 \u0441\u0435\u0439\u0447\u0430\u0441, \u0441 \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435\u043c, \u0437\u0430\u0447\u0435\u043c \u043d\u0430\u043c \u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435 \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u044d\u0442\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b, \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0432\u0441\u0435\u0445 \u044d\u0442\u0438\u0445 \u043d\u043e\u0432\u044b\u0445 \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u043e\u0432.<\/p>\n<h2>\u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441<\/h2>\n<p>\u041a \u0441\u0447\u0430\u0441\u0442\u044c\u044e, \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/container\/flat_set.html\" rel=\"noopener noreferrer nofollow\"><code>flat_set<\/code><\/a>, <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/container\/flat_multiset.html\" rel=\"noopener noreferrer nofollow\"><code>flat_multiset<\/code><\/a>, <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/container\/flat_map.html\" rel=\"noopener noreferrer nofollow\"><code>flat_map<\/code><\/a> \u0438 <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/container\/flat_multimap.html\" rel=\"noopener noreferrer nofollow\"><code>flat_multimap<\/code><\/a> \u0437\u0430\u0434\u0443\u043c\u044b\u0432\u0430\u043b\u0441\u044f \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u043d\u0430 \u043d\u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u0437\u044f\u0442\u044c \u0438 \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0438\u0445 \u043d\u0435 \u00ab\u043f\u043b\u043e\u0441\u043a\u0438\u0435\u00bb \u0430\u043d\u0430\u043b\u043e\u0433\u0438 (\u0442\u043e \u0435\u0441\u0442\u044c, \u0434\u0440\u0443\u0433\u0438\u0435 \u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0435\u043d\u043d\u044b\u0435 \u0430\u0441\u0441\u043e\u0446\u0438\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u2014 <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/container\/set.html\" rel=\"noopener noreferrer nofollow\"><code>std::set<\/code><\/a>, <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/container\/map.html\" rel=\"noopener noreferrer nofollow\"><code>std::map<\/code><\/a> \u0438 \u0438\u0436\u0435 \u0441 \u043d\u0438\u043c\u0438), \u0442\u0430\u043a \u0447\u0442\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b \u043f\u043b\u043e\u0441\u043a\u0438\u0445 \u0438 \u043d\u0435 \u043f\u043b\u043e\u0441\u043a\u0438\u0445 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u044e\u0442.<\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u043e\u0441\u0442\u0435\u043d\u044c\u043a\u0438\u0439 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u0441 <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/container\/set.html\" rel=\"noopener noreferrer nofollow\">\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b std::set \u043d\u0430 cppreference<\/a> \u0431\u0435\u0437 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f (\u0438 \u0432\u044b\u0432\u043e\u0434, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0431\u0443\u0434\u0435\u0442 \u0442\u0435\u043c \u0436\u0435 \u0441\u0430\u043c\u044b\u043c), \u0435\u0441\u043b\u0438 \u0432\u0441\u0435 \u0432\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/container\/set.html\" rel=\"noopener noreferrer nofollow\"><code>std::set<\/code><\/a> \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0430 <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/container\/flat_set.html\" rel=\"noopener noreferrer nofollow\"><code>std::flat_set<\/code><\/a> (<a href=\"https:\/\/godbolt.org\/z\/P6GbxEzc9\" rel=\"noopener noreferrer nofollow\">godbolt<\/a>).<\/p>\n<details class=\"spoiler\">\n<summary>\u0422\u043e\u0442 \u0441\u0430\u043c\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 (\u0432 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u0435)<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"cpp\">#include &lt;algorithm&gt; #include &lt;iomanip&gt; #include &lt;iostream&gt; #include &lt;iterator&gt; #include &lt;set&gt; #include &lt;string_view&gt;   template&lt;typename T&gt; std::ostream&amp; operator&lt;&lt;(std::ostream&amp; out, const std::set&lt;T&gt;&amp; set) {     if (set.empty())         return out &lt;&lt; \"{}\";     out &lt;&lt; \"{ \" &lt;&lt; *set.begin();     std::for_each(std::next(set.begin()), set.end(), [&amp;out](const T&amp; element)     {         out &lt;&lt; \", \" &lt;&lt; element;     });     return out &lt;&lt; \" }\"; }   int main() {     std::set&lt;int&gt; set{1, 5, 3};     std::cout &lt;&lt; set &lt;&lt; '\\n';       set.insert(2);     std::cout &lt;&lt; set &lt;&lt; '\\n';       set.erase(1);     std::cout &lt;&lt; set &lt;&lt; \"\\n\\n\";       std::set&lt;int&gt; keys{3, 4};     for (int key : keys)     {         if (set.contains(key))             std::cout &lt;&lt; set &lt;&lt; \" does contain \" &lt;&lt; key &lt;&lt; '\\n';         else             std::cout &lt;&lt; set &lt;&lt; \" doesn't contain \" &lt;&lt; key &lt;&lt; '\\n';     }     std::cout &lt;&lt; '\\n';       std::string_view word = \"element\";     std::set&lt;char&gt; characters(word.begin(), word.end());     std::cout &lt;&lt; \"There are \" &lt;&lt; characters.size() &lt;&lt; \" unique characters in \" &lt;&lt; std::quoted(word) &lt;&lt; \":\\n\" &lt;&lt; characters &lt;&lt; '\\n'; }<\/code><\/pre>\n<\/div>\n<\/details>\n<p>\u0418 \u0442\u043e\u0447\u043d\u043e \u0442\u0430\u043a \u0436\u0435 \u0432 \u043b\u044e\u0431\u043e\u043c \u043a\u043e\u0434\u0435 \u0432\u0441\u0435 \u0432\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/container\/map.html\" rel=\"noopener noreferrer nofollow\"><code>std::map<\/code><\/a> \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0430 <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/container\/flat_map.html\" rel=\"noopener noreferrer nofollow\"><code>std::flat_map<\/code><\/a> \u0438 \u0432\u0441\u0451 \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u0422\u0430\u043a \u0436\u0435 \u0432\u043e\u0437\u044c\u043c\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440 \u0441 <a href=\"\/home\/eoanermine\/%D0%A1%D0%B8%D0%B4%D0%BE%D1%80%D1%83%D0%BA%20%D0%94%D0%B0%D0%BD%D0%B8%D0%BB%20%D0%92%D0%B0%D0%B4%D0%B8%D0%BC%D0%BE%D0%B2%D0%B8%D1%87,%20%D0%9B%D0%B0%D0%B11.zip\" rel=\"noopener noreferrer nofollow\">\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043d\u0430 cppreference<\/a> (<a href=\"https:\/\/godbolt.org\/z\/TM6j54Y3q\" rel=\"noopener noreferrer nofollow\">godbolt<\/a>).<\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0440 (\u043f\u043e\u0447\u0442\u0438 \u0432 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u0435)<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"cpp\">#include &lt;iostream&gt; #include &lt;map&gt; #include &lt;string&gt; #include &lt;string_view&gt;   void print_map(std::string_view comment, const std::map&lt;std::string, int&gt;&amp; m) {     std::cout &lt;&lt; comment;     \/\/ Iterate using C++17 facilities     for (const auto&amp; [key, value] : m)         std::cout &lt;&lt; '[' &lt;&lt; key &lt;&lt; \"] = \" &lt;&lt; value &lt;&lt; \"; \";     std::cout &lt;&lt; '\\n'; }   int main() {     \/\/ Create a map of three (string, int) pairs     std::map&lt;std::string, int&gt; m{{\"CPU\", 10}, {\"GPU\", 15}, {\"RAM\", 20}};       print_map(\"1) Initial map: \", m);       m[\"CPU\"] = 25; \/\/ update an existing value     m[\"SSD\"] = 30; \/\/ insert a new value     print_map(\"2) Updated map: \", m);       \/\/ Using operator[] with non-existent key always performs an insert     std::cout &lt;&lt; \"3) m[UPS] = \" &lt;&lt; m[\"UPS\"] &lt;&lt; '\\n';     print_map(\"4) Updated map: \", m);       m.erase(\"GPU\");     print_map(\"5) After erase: \", m);       std::erase_if(m, [](const auto&amp; pair){ return std::get&lt;1&gt;(pair) &gt; 25; });     print_map(\"6) After erase: \", m);     std::cout &lt;&lt; \"7) m.size() = \" &lt;&lt; m.size() &lt;&lt; '\\n';       m.clear();     std::cout &lt;&lt; std::boolalpha &lt;&lt; \"8) Map is empty: \" &lt;&lt; m.empty() &lt;&lt; '\\n'; } <\/code><\/pre>\n<p>\u041f\u043e\u0447\u0435\u043c\u0443 \u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u00ab\u043f\u043e\u0447\u0442\u0438\u00bb: \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u044d\u0442\u043e \u043d\u0435 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u0434 \u0441 cppreference. \u042f \u0432\u043d\u0435\u0441 \u0432 \u043d\u0435\u0433\u043e \u043f\u0440\u0430\u0432\u043a\u0443: \u043f\u043e\u043c\u0435\u043d\u044f\u043b \u0441\u0442\u0440\u043e\u043a\u0443 \u211633. \u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0432 \u043d\u0435\u0439 \u0431\u044b\u043b \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 <code>pair.second &gt; 25<\/code>, \u0430 \u043d\u0435 <code>std::get&lt;1&gt;(pair) &gt; 25<\/code>. \u041c\u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0438\u0437-\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 (\u043a\u0430\u043a gcc, \u0442\u0430\u043a \u0438 clang) \u0441\u0442\u0430\u043b \u0440\u0443\u0433\u0430\u0442\u044c\u0441\u044f, \u0447\u0442\u043e <code>pair<\/code> (\u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u043b\u044f\u043c\u0431\u0434\u0430-\u0444\u0443\u043d\u043a\u0446\u0438\u0438) \u044d\u0442\u043e <code>std::tuple<\/code>, \u0430 \u043d\u0435 <code>std::pair<\/code>. \u0424\u0438\u0447\u0430 \u044d\u0442\u043e \u0438\u043b\u0438 \u0431\u0430\u0433 \u2014 \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u043e. \u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0442\u0438\u043f <code>const_reference<\/code> \u0443 <code>std::flat_map<\/code> \u043a\u0430\u043a <code>pair&lt;const key_type&amp;, mapped_type&amp;&gt;<\/code>, \u0430 \u043d\u0435 <code>tuple<\/code> [<a href=\"https:\/\/eel.is\/c++draft\/flat.multimap.defn\" rel=\"noopener noreferrer nofollow\">flat.multimap.defn<\/a>]<\/p>\n<p>P.S. \u0412\u043f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0438 \u0432\u044b\u044f\u0441\u043d\u0438\u043b\u043e\u0441\u044c, \u0447\u0442\u043e, \u043f\u043e \u0432\u0441\u0435\u0439 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438, \u044d\u0442\u043e \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 libstdc++. \u041f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 libc++ \u043e\u0448\u0438\u0431\u043e\u043a \u043d\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442. \u0421\u043c. <a href=\"https:\/\/godbolt.org\/z\/qP11o4osq\" rel=\"noopener noreferrer nofollow\">godbolt<\/a> \u0438 \u043e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u0435 \u0432 <a href=\"https:\/\/t.me\/ProCxx\/700236\" rel=\"noopener noreferrer nofollow\">@procxx (Telegram)<\/a><\/p>\n<\/div>\n<\/details>\n<p>\u0412 \u0447\u0451\u043c \u0436\u0435 <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/container\/flat_set.html\" rel=\"noopener noreferrer nofollow\"><code>flat_set<\/code><\/a> \u0432\u0441\u0435-\u0442\u0430\u043a\u0438 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/container\/set.html\" rel=\"noopener noreferrer nofollow\"><code>set<\/code><\/a>:<\/p>\n<ul>\n<li>\n<p>\u0423 <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/container\/flat_set.html\" rel=\"noopener noreferrer nofollow\"><code>flat_set<\/code><\/a> <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/container\/flat_set\/flat_set.html\" rel=\"noopener noreferrer nofollow\">\u0435\u0441\u0442\u044c \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u044b<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0442 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440-\u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043a\u0430\u043a \u043e\u0442\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d, \u0442\u0430\u043a \u0438 \u043d\u0435\u0442 (\u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/container\/flat_set.html\" rel=\"noopener noreferrer nofollow\"><code>flat_set<\/code><\/a> \u043e\u0442\u0441\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u0442 \u0435\u0433\u043e \u0438 \u0434\u0430\u0436\u0435 \u0443\u0434\u0430\u043b\u0438\u0442 \u0434\u0443\u0431\u043b\u0438\u043a\u0430\u0442\u044b \u0437\u0430 \u0432\u0430\u0441). \u041f\u0440\u0438\u043c\u0435\u0440 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u043f\u043e\u0434 \u0441\u043f\u043e\u0439\u043b\u0435\u0440\u043e\u043c \u0438 \u043d\u0430 <a href=\"https:\/\/godbolt.org\/z\/rbxrh3E95\" rel=\"noopener noreferrer nofollow\">godbolt<\/a>.<\/p>\n<\/li>\n<\/ul>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0440<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"cpp\">#include &lt;vector&gt; #include &lt;flat_set&gt;  int main() {   std::vector&lt;int&gt; elements = {0, 1, 2, 3, 4, 5};    {     \/\/ \u041a\u043e\u0434 \u043d\u0438\u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u0442.\u043a.     \/\/ std::vector \u2014 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u043b\u044f flat_set     \/\/ \u0415\u0441\u043b\u0438 \u043c\u044b \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, std::deque,     \/\/ \u0442\u043e \u043d\u0430\u0441 \u0436\u0434\u0451\u0442 \u043e\u0431\u043b\u043e\u043c     std::flat_set&lt;int&gt; flat_set(elements);   }    {     \/\/ \u0410 \u0432\u043e\u0442 \u044d\u0442\u043e\u0442 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442     \/\/ std::set&lt;int&gt; set(elements);   }    {     \/\/ \u041d\u043e \u043b\u0443\u0447\u0448\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \u043d\u0435 \u0437\u0430\u043d\u0438\u043c\u0430\u043b\u0441\u044f     \/\/ \u043b\u0438\u0448\u043d\u0435\u0439 \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u043e\u0439     std::flat_set&lt;int&gt; flat_set(       std::sorted_unique_t{},       elements     );   } }<\/code><\/pre>\n<\/div>\n<\/details>\n<ul>\n<li>\n<p>\u041c\u0435\u0442\u043e\u0434 <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/container\/flat_set\/extract.html\" rel=\"noopener noreferrer nofollow\"><code>flat_set::extract<\/code><\/a> \u0432\u043c\u0435\u0441\u0442\u043e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u0442\u044c \u0443\u0437\u043b\u044b (\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0443 <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/container\/flat_set.html\" rel=\"noopener noreferrer nofollow\"><code>flat_set<\/code><\/a> \u043d\u0435\u0442), \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u0435\u0442 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440-\u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435. \u041f\u0440\u0438\u043c\u0435\u0440 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u043f\u043e\u0434 \u0441\u043f\u043e\u0439\u043b\u0435\u0440\u043e\u043c \u0438 \u043d\u0430 <a href=\"https:\/\/godbolt.org\/z\/f8oqjhK3n\" rel=\"noopener noreferrer nofollow\">godbolt<\/a>.<\/p>\n<\/li>\n<\/ul>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0440<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"cpp\">#include &lt;flat_map&gt; #include &lt;print&gt;  int main() {     std::vector&lt;std::string&gt; keys = {         \"one\", \"two\", \"three\"     };     std::vector&lt;int&gt; values = {         1, 2, 3     };     std::flat_map flat_map(         std::move(keys), std::move(values)     );      std::println(\"{}\", flat_map);      \/*         \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 containers:         struct containers         {             key_container_type keys;             mapped_container_type values;         };     *\/     auto containers = std::move(flat_map).extract();      \/\/ \u0417\u0430\u043c\u0435\u0442\u044c\u0442\u0435, keys \u0438 values \u043e\u0442\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u044b, \u0442\u0430\u043a \u043a\u0430\u043a \u0440\u0430\u043d\u0435\u0435 \u043e\u043d\u0438     \/\/ \u043e\u0442\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0432 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0435     \/\/ \u0422\u0430\u043a \u0447\u0442\u043e \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f replace     \/\/ (\u043e\u043d \u043e\u0436\u0438\u0434\u0430\u0435\u0442 \u043e\u0442\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435)     flat_map.replace(         std::move(containers.keys),         std::move(containers.values)     );      std::println(\"{}\", flat_map); }<\/code><\/pre>\n<\/div>\n<\/details>\n<ul>\n<li>\n<p>\u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e, \u0432\u043c\u0435\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u043e\u043a <code>insert<\/code>, \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0449\u0438\u0445 \u0443\u0437\u043b\u044b, \u0443 <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/container\/flat_set.html\" rel=\"noopener noreferrer nofollow\"><code>flat_set<\/code><\/a> \u0432\u0432\u0435\u0434\u0451\u043d \u043c\u0435\u0442\u043e\u0434 <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/container\/flat_set\/replace.html\" rel=\"noopener noreferrer nofollow\"><code>replace<\/code><\/a>, \u0437\u0430\u043c\u0435\u043d\u044f\u044e\u0449\u0438\u0439 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440-\u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u043d\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u044b\u0439 \u0432 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0435 (\u0432\u0430\u0436\u043d\u044b\u0439 \u043d\u044e\u0430\u043d\u0441: \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0439 \u043a\u0430\u043a \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 <strong>\u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043e\u0442\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d \u0438 \u0432 \u043d\u0435\u043c \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u043f\u0430\u0440 \u0441 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u044e\u0449\u0438\u043c\u0438\u0441\u044f \u043a\u043b\u044e\u0447\u0430\u043c\u0438, \u0438\u043d\u0430\u0447\u0435 \u0431\u0443\u0434\u0435\u0442 UB<\/strong>). \u041f\u0440\u0438\u043c\u0435\u0440 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u043f\u043e\u0434 \u0441\u043f\u043e\u0439\u043b\u0435\u0440\u043e\u043c \u0438 \u043d\u0430 <a href=\"https:\/\/godbolt.org\/z\/f6Trq4r6o\" rel=\"noopener noreferrer nofollow\">godbolt<\/a>.<\/p>\n<\/li>\n<\/ul>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0440<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"cpp\">#include &lt;cassert&gt; #include &lt;flat_set&gt;  \/*     void replace( container_type&amp;&amp; cont ); *\/  int main() {     std::vector&lt;int&gt; keys{1, 2, 3};       std::flat_set&lt;int&gt; flat_set;     assert(flat_set.empty());       flat_set.replace(std::move(keys));     assert(flat_set.size() == 3);     assert(keys.empty());  }<\/code><\/pre>\n<\/div>\n<\/details>\n<ul>\n<li>\n<p>\u041a\u0430\u043a \u043c\u044b \u0443\u0436\u0435 \u0432\u0438\u0434\u0435\u043b\u0438 \u0432 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0441 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u043e\u043c, \u0443 \u043d\u0430\u0441 \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u043d\u043e\u0432\u044b\u0435 \u0442\u0435\u0433\u0438: <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/container\/sorted_unique.html\" rel=\"noopener noreferrer nofollow\"><code>std::sorted_unique_t<\/code><\/a> \u0434\u043b\u044f <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/container\/flat_set.html\" rel=\"noopener noreferrer nofollow\"><code>flat_set<\/code><\/a> (\u0438\u043b\u0438 <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/container\/flat_map.html\" rel=\"noopener noreferrer nofollow\"><code>flat_map<\/code><\/a>) \u0438 <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/container\/sorted_equivalent.html\" rel=\"noopener noreferrer nofollow\"><code>std::sorted_equivalent_t<\/code><\/a> \u0434\u043b\u044f <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/container\/flat_multiset.html\" rel=\"noopener noreferrer nofollow\"><code>flat_multiset<\/code><\/a> (\u0438\u043b\u0438 <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/container\/flat_multimap.html\" rel=\"noopener noreferrer nofollow\"><code>flat_multimap<\/code><\/a>) \u0434\u043b\u044f \u0442\u0435\u0445 \u0441\u043b\u0443\u0447\u0430\u0435\u0432, \u043a\u043e\u0433\u0434\u0430 \u043c\u044b \u0442\u043e\u0447\u043d\u043e \u0437\u043d\u0430\u0435\u043c, \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0435 \u043d\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u043e\u0442\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u044b. \u041f\u0440\u0438\u043c\u0435\u0440 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u043f\u043e\u0434 \u0441\u043f\u043e\u0439\u043b\u0435\u0440\u043e\u043c \u0438 \u043d\u0430 <a href=\"https:\/\/godbolt.org\/z\/hcErbqzKW\" rel=\"noopener noreferrer nofollow\">godbolt<\/a>.<\/p>\n<\/li>\n<\/ul>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0440<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"cpp\">#include &lt;flat_set&gt;  int main() {     std::flat_set&lt;int&gt; flat_set;      \/\/ \u0422\u0443\u0442 \u0432\u0441\u0451 \u0445\u043e\u0440\u043e\u0448\u043e, insert \u043e\u0442\u0441\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u0442     \/\/ \u0434\u0430\u043d\u043d\u044b\u0435 \u0437\u0430 \u043d\u0430\u0441     flat_set.insert({         15, 27, 18, 7, 41     });      \/\/ \u0422\u0443\u0442 \u0442\u043e\u0436\u0435 \u0432\u0441\u0451 \u0445\u043e\u0440\u043e\u0448\u043e, \u0442\u0430\u043a \u043a\u0430\u043a \u0434\u0430\u043d\u043d\u044b\u0435     \/\/ \u043e\u0442\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u044b     flat_set.insert(         std::sorted_unique_t{},         {1, 2, 3, 4, 5}     );      \/\/ \u0410 \u0442\u0443\u0442 \u043c\u044b \u043d\u0430\u0440\u0443\u0448\u0438\u043b\u0438 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442. \u0423 \u043d\u0430\u0441 UB     flat_set.insert(         std::sorted_unique_t{},         {68, 6, 4, 3, 20}     ); }<\/code><\/pre>\n<\/div>\n<\/details>\n<p>\u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/container\/flat_map.html\" rel=\"noopener noreferrer nofollow\"><code>flat_map<\/code><\/a> \u0438 <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/container\/map.html\" rel=\"noopener noreferrer nofollow\"><code>map<\/code><\/a>, \u0442\u043e\u043b\u044c\u043a\u043e <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/container\/flat_map\/flat_map.html\" rel=\"noopener noreferrer nofollow\">\u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u044b<\/a>, \u043c\u0435\u0442\u043e\u0434\u044b <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/container\/flat_map\/extract.html\" rel=\"noopener noreferrer nofollow\"><code>extract<\/code><\/a> \u0438 <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/container\/flat_map\/replace.html\" rel=\"noopener noreferrer nofollow\"><code>replace<\/code><\/a> \u043e\u043f\u0435\u0440\u0438\u0440\u0443\u044e\u0442 \u043d\u0435 \u043e\u0434\u043d\u0438\u043c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u043c, \u0430 \u0434\u0432\u0443\u043c\u044f: \u043e\u0434\u043d\u0438\u043c \u0434\u043b\u044f \u043a\u043b\u044e\u0447\u0435\u0439, \u0434\u0440\u0443\u0433\u0438\u043c \u0434\u043b\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0443 <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/container\/flat_map.html\" rel=\"noopener noreferrer nofollow\"><code>flat_map<\/code><\/a> \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u044b \u043c\u0435\u0442\u043e\u0434\u044b <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/container\/flat_map\/keys.html\" rel=\"noopener noreferrer nofollow\"><code>keys<\/code><\/a> \u0438 <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/container\/flat_map\/values.html\" rel=\"noopener noreferrer nofollow\"><code>values<\/code><\/a>, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0449\u0438\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b. \u041f\u0440\u0438\u043c\u0435\u0440 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u043f\u043e\u0434 \u0441\u043f\u043e\u0439\u043b\u0435\u0440\u043e\u043c \u0438 \u043d\u0430 <a href=\"https:\/\/godbolt.org\/z\/P1rnG7aqz\" rel=\"noopener noreferrer nofollow\">godbolt<\/a>.<\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0440<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"cpp\">#include &lt;flat_map&gt; #include &lt;print&gt;  int main() {     std::vector&lt;std::string&gt; keys = {         \"one\", \"two\", \"three\"     };     std::vector&lt;int&gt; values = {         1, 2, 3     };     std::flat_map flat_map(         std::move(keys), std::move(values)     );      std::println(\"{}\", flat_map);      \/*         \u0422\u0438\u043f containers:         struct containers         {             key_container_type keys;             mapped_container_type values;         };     *\/     auto containers = std::move(flat_map).extract();      \/\/ \u0417\u0430\u043c\u0435\u0442\u044c\u0442\u0435, keys \u0438 values \u043e\u0442\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u044b, \u0442\u0430\u043a \u043a\u0430\u043a \u0440\u0430\u043d\u0435\u0435 \u043e\u043d\u0438     \/\/ \u043e\u0442\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0432 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0435     \/\/ \u0422\u0430\u043a \u0447\u0442\u043e \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f replace     \/\/ (\u043e\u043d \u043e\u0436\u0438\u0434\u0430\u0435\u0442 \u043e\u0442\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435)     flat_map.replace(         std::move(containers.keys),         std::move(containers.values)     );      std::println(\"{}\", flat_map); }<\/code><\/pre>\n<p>\u0412\u044b\u0432\u043e\u0434 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b:<\/p>\n<pre><code class=\"json\">{\"one\": 1, \"three\": 3, \"two\": 2} {\"one\": 1, \"three\": 3, \"two\": 2}<\/code><\/pre>\n<\/div>\n<\/details>\n<h2>\u041e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432<\/h2>\n<p>\u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u043f\u043b\u043e\u0441\u043a\u0438\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0431\u044b\u043b\u0438 \u043f\u0440\u0438\u043d\u044f\u0442\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0432 C++23 \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430\u0445 (<a href=\"https:\/\/gcc.gnu.org\/gcc-15\/changes.html\" rel=\"noopener noreferrer nofollow\">gcc 15<\/a>, <a href=\"https:\/\/clang.llvm.org\/docs\/ReleaseNotes.html\" rel=\"noopener noreferrer nofollow\">clang 21<\/a>) \u043b\u0438\u0448\u044c \u043d\u0435\u0434\u0430\u0432\u043d\u043e, \u043e\u043d\u0438 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b \u0432 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0435 C++ \u0434\u0430\u0432\u043d\u043e: \u043e \u043d\u0438\u0445 <a href=\"https:\/\/lafstern.org\/matt\/col1.pdf\" rel=\"noopener noreferrer nofollow\">\u043f\u0438\u0441\u0430\u043b \u0438 Matt Austern<\/a>, \u0438 <a href=\"https:\/\/www.amazon.com\/Modern-Design-Generic-Programming-Patterns\/dp\/0201704315\" rel=\"noopener noreferrer nofollow\">Andrei Alexandrescu<\/a>. \u0410 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0434\u0430\u0436\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043b <code>flat_map<\/code> \u0432 \u0441\u0432\u043e\u0435\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435 <a href=\"https:\/\/sourceforge.net\/projects\/loki-lib\/\" rel=\"noopener noreferrer nofollow\">Loki<\/a> \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c <a href=\"https:\/\/github.com\/snaewe\/loki-lib\/blob\/master\/include\/loki\/AssocVector.h\" rel=\"noopener noreferrer nofollow\">AssocVector<\/a>.<\/p>\n<p>\u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, <code>flat_set<\/code> \u0438 <code>flat_map<\/code> <a href=\"https:\/\/live.boost.org\/doc\/libs\/1_88_0\/doc\/html\/container\/non_standard_containers.html#container.non_standard_containers.flat_xxx\" rel=\"noopener noreferrer nofollow\">\u0432\u043e\u0448\u043b\u0438 \u0434\u0430\u0436\u0435 \u0432 Boost 1.48 <\/a>\u0431\u043e\u043b\u044c\u0448\u0435 12 \u043b\u0435\u0442 \u043d\u0430\u0437\u0430\u0434 \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f\u043c\u0438 <a href=\"https:\/\/live.boost.org\/doc\/libs\/1_88_0\/doc\/html\/doxygen\/boost_container_header_reference\/classboost_1_1container_1_1flat__set.html\" rel=\"noopener noreferrer nofollow\"><code>boost::container::flat_set<\/code><\/a>, <a href=\"https:\/\/live.boost.org\/doc\/libs\/1_88_0\/doc\/html\/doxygen\/boost_container_header_reference\/classboost_1_1container_1_1flat__set.html\" rel=\"noopener noreferrer nofollow\"><code>boost::container::flat_map<\/code><\/a> \u0432\u043c\u0435\u0441\u0442\u0435 \u0441\u043e \u0441\u0432\u043e\u0438\u043c\u0438 <code>mutli<\/code> \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438 (\u0438\u0437 \u043c\u0435\u043d\u0435\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u043f\u043b\u043e\u0441\u043a\u0438\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0442\u0430\u043a\u0436\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b \u0432 <a href=\"https:\/\/github.com\/ETLCPP\/etl\" rel=\"noopener noreferrer nofollow\">ETL<\/a> \u0438 <a href=\"https:\/\/source.chromium.org\/chromium\/chromium\/src\/+\/main:base\/containers\/README.md\" rel=\"noopener noreferrer nofollow\">Chromium<\/a>).<\/p>\n<p>\u041f\u043e\u0447\u0442\u0438 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435, \u0447\u0435\u043c \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f <code>AssocVector<\/code> \u0438 <code>boost::container::flat_map<\/code> \u043e\u0442 \u0441\u0432\u043e\u0438\u0445 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u0439 \u2014 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445. \u0415\u0441\u043b\u0438 <code>std::flat_map<\/code> \u0445\u0440\u0430\u043d\u0438\u0442 \u043a\u043b\u044e\u0447\u0438 \u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u0445, \u0442\u043e <code>AssocVector<\/code> \u0438 <code>boost::container::flat_map<\/code> \u0445\u0440\u0430\u043d\u044f\u0442 \u0438\u0445 \u0432 \u043e\u0434\u043d\u043e\u043c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435 \u0432 \u0432\u0438\u0434\u0435 \u043f\u0430\u0440 (\u0430-\u043b\u044f <code>std::vector&lt;std::pair&lt;K, V&gt;&gt;<\/code>).<\/p>\n<p>\u041f\u043e\u0447\u0435\u043c\u0443 <code>std::flat_map<\/code> \u0442\u0430\u043a \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u0441\u0432\u043e\u0438\u0445 \u043f\u0440\u0435\u0434\u043a\u043e\u0432? \u041d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u043e, \u043d\u043e <code>flat_map<\/code> \u0431\u044b\u043b \u0441\u0434\u0435\u043b\u0430\u043d \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438, \u0432\u043d\u0435\u0437\u0430\u043f\u043d\u043e, \u0443\u0441\u043a\u043e\u0440\u044f\u0435\u0442 \u0432\u0441\u0442\u0430\u0432\u043a\u0443 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0445 \u043f\u0430\u0440 \u043a\u043b\u044e\u0447-\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 40-60% \u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0434\u0438\u0437\u0430\u0439\u043d\u043e\u043c.<\/p>\n<p>\u041f\u043e\u0434 \u0441\u043f\u043e\u0439\u043b\u0435\u0440\u043e\u043c \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u044b \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u043e\u0432, \u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0445 <a href=\"https:\/\/github.com\/tzlaine\" rel=\"noopener noreferrer nofollow\">Zach Laine<\/a>, \u0430\u0432\u0442\u043e\u0440\u043e\u043c <code>std::flat_map<\/code>, \u0438 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0445 \u0432 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u043c \u043f\u0440\u043e\u043f\u043e\u0437\u0430\u043b\u0435 <a href=\"https:\/\/wg21.link\/p0429r1\" rel=\"noopener noreferrer nofollow\">P0429R1 \u00abA standard flat_map\u00bb<\/a> (<code>split_map_t<\/code> \u0432 \u043b\u0435\u0433\u0435\u043d\u0434\u0435 \u2014 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 <code>std::flat_map<\/code> \u0432 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 Zach Laine).<\/p>\n<details class=\"spoiler\">\n<summary>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u043e\u0432 \u043e\u0442 Zach Laine<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/db8\/350\/9ed\/db83509ed2d3a5a140abd4ad5fb06f03.jpeg\" alt=\"\u041e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f: insert, iterate, lookup\" title=\"\u041e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f: insert, iterate, lookup\" width=\"1968\" height=\"858\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/db8\/350\/9ed\/db83509ed2d3a5a140abd4ad5fb06f03.jpeg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/db8\/350\/9ed\/db83509ed2d3a5a140abd4ad5fb06f03.jpeg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u041e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f: <a href=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/33e\/230\/92b\/33e23092be15fcbce2c4254a68a1e8d2.webp\" rel=\"noopener noreferrer nofollow\">insert<\/a>, <a href=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/fe7\/439\/ede\/fe7439eded49db92a93cfbb8263467a0.webp\" rel=\"noopener noreferrer nofollow\">iterate<\/a>, <a href=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5ee\/e2d\/445\/5eee2d445bd5a2d409460e68c04e0723.webp\" rel=\"noopener noreferrer nofollow\">lookup<\/a><\/figcaption><\/div>\n<\/figure>\n<\/div>\n<\/details>\n<p>\u0412 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u043c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f \u043e\u0442 \u0438\u0445 \u043f\u0440\u0435\u0434\u043a\u043e\u0432 \u0438\u0437 Boost \u0438 Loki \u043b\u0438\u0448\u044c \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u043e\u0431\u043e\u0431\u0449\u0435\u043d\u043d\u043e\u0441\u0442\u044c\u044e: <code>AssocVector<\/code> \u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0442\u0438\u043f \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0431\u0443\u0434\u0443\u0442 \u043b\u0435\u0436\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u2014 \u0442\u0430\u043c \u0432\u0441\u0435\u0433\u0434\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f <code>std::vector<\/code>; \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0438\u0437 Boost \u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u043b\u0438 \u044d\u0442\u043e\u0433\u043e \u0432\u043f\u043b\u043e\u0442\u044c \u0434\u043e <a href=\"https:\/\/www.boost.org\/releases\/1.66.0\/\" rel=\"noopener noreferrer nofollow\">Boost 1.66<\/a>, \u043d\u043e \u0434\u0430\u0436\u0435 \u0441\u0435\u0439\u0447\u0430\u0441, \u043a\u043e\u0433\u0434\u0430 \u043d\u0430 \u0434\u0432\u043e\u0440\u0435 \u0443\u0436\u0435 <a href=\"https:\/\/www.boost.org\/releases\/1.88.0\/\" rel=\"noopener noreferrer nofollow\">Boost 1.88<\/a>, \u0432 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u044d\u0442\u043e\u0439 \u0444\u0438\u0447\u0438 <a href=\"https:\/\/github.com\/boostorg\/container\/commit\/e8baf848bc426022dffbc814db8e1261d6033d4b\" rel=\"noopener noreferrer nofollow\">\u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u0447\u0438\u043d\u044f\u0442 \u0431\u0430\u0433\u0438<\/a>.<\/p>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e, \u0432 \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u0440\u0430\u043d\u043d\u0438\u0445 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0439 \u043f\u043b\u043e\u0441\u043a\u0438\u0445 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432, ETL, \u0432\u0441\u0451 \u0436\u0435 \u0435\u0441\u0442\u044c \u043e\u0434\u043d\u0430 \u0437\u0430\u043d\u044f\u0442\u043d\u0430\u044f \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044c, \u0437\u0430\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u044e\u0449\u0430\u044f \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043d\u0438\u044f: \u0432 \u0446\u0435\u043b\u044f\u0445 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0432\u0441\u0442\u0430\u0432\u043a\u0438, \u0432 \u043d\u0435\u0439 \u043f\u043b\u043e\u0441\u043a\u0438\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b \u043d\u0435 \u043a\u0430\u043a \u043e\u0442\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u044b (\u043f\u043b\u043e\u0441\u043a\u0438\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0432 ETL \u0438\u043c\u0435\u044e\u0442 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440, \u0437\u0430\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0439 \u043a\u0430\u043a \u0448\u0430\u0431\u043b\u043e\u043d\u043d\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440) \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439, \u0430 \u043a\u0430\u043a <strong>\u043c\u0430\u0441\u0441\u0438\u0432\u044b \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u0439 <\/strong>\u043d\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0432\u044b\u043d\u0443\u0436\u0434\u0435\u043d\u044b \u0445\u0440\u0430\u043d\u0438\u0442\u044c\u0441\u044f \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u043c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435. \u0421 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0447\u0443\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0431\u044b\u0441\u0442\u0440\u0443\u044e \u0432\u0441\u0442\u0430\u0432\u043a\u0443 \u0437\u0430 \u0441\u0447\u0435\u0442 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u0435\u0448\u0435\u0432\u043e \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0430 \u0441 \u0434\u0440\u0443\u0433\u043e\u0439 \u0447\u0443\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0434\u043e\u043b\u0433\u0438\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c \u0437\u0430 \u0441\u0447\u0435\u0442 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0434\u043e \u043d\u0438\u0445 \u043d\u0430\u043c \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0445\u043e\u0434\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c.<\/p>\n<p>\u0410\u0432\u0442\u043e\u0440\u044b ETL \u043d\u0435 \u043f\u0440\u0438\u0432\u043e\u0434\u044f\u0442 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0441\u0432\u043e\u0435\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0441 \u043a\u0430\u043a\u0438\u043c\u0438-\u043b\u0438\u0431\u043e \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f\u043c\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u0438\u0445 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e.<\/p>\n<p>\u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c <img decoding=\"async\" class=\"formula inline\" source=\"N\" alt=\"N\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/8\/8d\/8d9\/8d9c307cb7f3c4a32822a51922d1ceaa.svg\" width=\"auto\" height=\"auto\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/8\/8d\/8d9\/8d9c307cb7f3c4a32822a51922d1ceaa.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/8\/8d\/8d9\/8d9c307cb7f3c4a32822a51922d1ceaa.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u043f\u0430\u0440 \u0441 \u043a\u043b\u044e\u0447\u043e\u043c \u2014 \u043f\u0441\u0435\u0432\u0434\u043e(\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e) \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c <code>int64_t<\/code>,  \u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c \u2014 \u0437\u0430\u0445\u0430\u0440\u0434\u043a\u043e\u0436\u0435\u043d\u043d\u044b\u043c <code>int64_t{1}<\/code> \u0438 \u0437\u0430\u043c\u0435\u0440\u0438\u043c, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u044d\u0442\u043e \u0437\u0430\u0439\u043c\u0435\u0442. \u041d\u0430 \u0432\u0441\u0435\u0445 \u0433\u0440\u0430\u0444\u0438\u043a\u0430\u0445 \u043d\u0438\u0436\u0435 \u043f\u043e \u043e\u0441\u0438 X \u2014 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0430\u0440 \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435 (\u0448\u0442.), \u043f\u043e \u043e\u0441\u0438 Y \u2014 \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b (\u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445 \u0438\u043b\u0438 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445 \u2014 \u0441\u043c. \u043f\u043e\u0434\u043f\u0438\u0441\u0438 \u043d\u0430 \u0433\u0440\u0430\u0444\u0438\u043a\u0430\u0445) \u0438\u043b\u0438 \u043e\u0431\u044a\u0435\u043c \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u043c\u043e\u0439 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u043c \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 (\u0432 \u041c\u0431\u0438\u0442 \u0438\u043b\u0438 \u041a\u0431\u0438\u0442 \u2014 \u0441\u043c. \u043f\u043e\u0434\u043f\u0438\u0441\u0438 \u043d\u0430 \u0433\u0440\u0430\u0444\u0438\u043a\u0430\u0445).<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/0b3\/ff3\/94a\/0b3ff394ae535898262638e99c738bf6.png\" alt=\"\u0411\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0432\u0441\u0442\u0430\u0432\u043a\u0438 N \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440. \u041a\u043b\u044e\u0447 \u2014 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 int64_t, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u2014 int64_t{1}.\" title=\"\u0411\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0432\u0441\u0442\u0430\u0432\u043a\u0438 N \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440. \u041a\u043b\u044e\u0447 \u2014 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 int64_t, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u2014 int64_t{1}.\" width=\"750\" height=\"500\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/0b3\/ff3\/94a\/0b3ff394ae535898262638e99c738bf6.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/0b3\/ff3\/94a\/0b3ff394ae535898262638e99c738bf6.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0411\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0432\u0441\u0442\u0430\u0432\u043a\u0438 N \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440. \u041a\u043b\u044e\u0447 \u2014 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 int64_t, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u2014 int64_t{1}.<\/figcaption><\/div>\n<\/figure>\n<p>\u041f\u043e\u0442\u043e\u043c \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435, \u043d\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u043a\u043b\u044e\u0447\u043e\u043c \u0431\u0443\u0434\u0435\u0442 50-\u0441\u0438\u043c\u0432\u043e\u043b\u044c\u043d\u044b\u0439 <code>std::string<\/code>.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/812\/6e3\/2d8\/8126e32d82c509bfca38ff86800222ca.png\" alt=\"\u0411\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0432\u0441\u0442\u0430\u0432\u043a\u0438 N \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440. \u041a\u043b\u044e\u0447 \u2014 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 50-\u0441\u0438\u043c\u0432\u043e\u043b\u044c\u043d\u044b\u0439 string, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u2014 int64_t{1}.\" title=\"\u0411\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0432\u0441\u0442\u0430\u0432\u043a\u0438 N \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440. \u041a\u043b\u044e\u0447 \u2014 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 50-\u0441\u0438\u043c\u0432\u043e\u043b\u044c\u043d\u044b\u0439 string, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u2014 int64_t{1}.\" width=\"750\" height=\"500\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/812\/6e3\/2d8\/8126e32d82c509bfca38ff86800222ca.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/812\/6e3\/2d8\/8126e32d82c509bfca38ff86800222ca.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0411\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0432\u0441\u0442\u0430\u0432\u043a\u0438 N \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440. \u041a\u043b\u044e\u0447 \u2014 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 50-\u0441\u0438\u043c\u0432\u043e\u043b\u044c\u043d\u044b\u0439 string, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u2014 int64_t{1}.<\/figcaption><\/div>\n<\/figure>\n<p>\u0427\u0442\u043e-\u0436\u0435, \u0440\u043e\u0441\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441 <code>std::flat_map<\/code> \u0432\u0438\u0434\u0435\u043d \u043d\u0435\u0432\u043e\u043e\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u043c \u0433\u043b\u0430\u0437\u043e\u043c. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u0432\u0441\u0451 \u0442\u0430\u043a \u0436\u0435 \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u043d\u0438\u0437\u043a\u0438\u043c \u0438 \u0432\u044b\u0440\u0430\u0441\u0442\u0430\u0435\u0442 \u043d\u0435 \u0442\u0430\u043a \u0443\u0436 \u0438 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c \u043d\u0430 10\u201320%.<\/p>\n<details class=\"spoiler\">\n<summary>\u0413\u0440\u0430\u0444\u0438\u043a\u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u044f \u043f\u0430\u043c\u044f\u0442\u0438 \u0442\u0443\u0442<\/summary>\n<div class=\"spoiler__content\">\n<p>\u0414\u043b\u044f <code>int64_t<\/code>:<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/2b4\/07a\/8c3\/2b407a8c3cb8640203586ec76ca90c49.png\" width=\"750\" height=\"500\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/2b4\/07a\/8c3\/2b407a8c3cb8640203586ec76ca90c49.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/2b4\/07a\/8c3\/2b407a8c3cb8640203586ec76ca90c49.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0414\u043b\u044f <code>std::string<\/code> (50 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432):<\/p>\n<p>:<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/4d5\/465\/0ff\/4d54650ffe0e9656e172a8c5adb8cd26.png\" width=\"750\" height=\"500\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/4d5\/465\/0ff\/4d54650ffe0e9656e172a8c5adb8cd26.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/4d5\/465\/0ff\/4d54650ffe0e9656e172a8c5adb8cd26.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<\/div>\n<\/details>\n<p>\u0413\u0440\u0430\u0444\u0438\u043a\u0438 \u0434\u043b\u044f \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u0432\u044b\u0433\u043b\u044f\u0434\u044f\u0442 \u0442\u043e\u0447\u044c-\u0432-\u0442\u043e\u0447\u044c \u043a\u0430\u043a \u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u0434\u043b\u044f \u0432\u0441\u0442\u0430\u0432\u043a\u0438, \u0438 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u044b \u043d\u0435 \u0431\u0443\u0434\u0443\u0442. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0440\u0430\u0437\u0443 \u043f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u043a \u0437\u0430\u043c\u0435\u0440\u0430\u043c \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u043f\u043e\u0438\u0441\u043a\u0430 \u0438 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438.<\/p>\n<p>\u0421\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c \u043f\u043e \u0442\u043e\u043c\u0443 \u0436\u0435 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0443 \u043a\u043b\u044e\u0447\u0438, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u0432\u0441\u0442\u0430\u0432\u0438\u043c \u0438\u0445 \u0432 \u043c\u0430\u0441\u0441\u0438\u0432, \u0430 \u043f\u043e\u0442\u043e\u043c \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043d\u0430\u0439\u0442\u0438 \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435 \u0432\u0441\u0435 \u0432\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u043f\u0430\u0440\u044b, \u043d\u043e \u0432 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u2014 \u043d\u0435 \u0432 \u0442\u043e\u043c, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u043d\u0438 \u0431\u044b\u043b\u0438 \u0432\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/755\/140\/25b\/75514025b1b73e1b207e8160bac11a92.png\" alt=\"\u0411\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u043e\u0438\u0441\u043a\u0430 N \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435 \u0432 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435. \u041a\u043b\u044e\u0447 \u2014 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 int64_t, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u2014 int64_t{1}.\" title=\"\u0411\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u043e\u0438\u0441\u043a\u0430 N \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435 \u0432 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435. \u041a\u043b\u044e\u0447 \u2014 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 int64_t, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u2014 int64_t{1}.\" width=\"750\" height=\"500\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/755\/140\/25b\/75514025b1b73e1b207e8160bac11a92.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/755\/140\/25b\/75514025b1b73e1b207e8160bac11a92.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0411\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u043e\u0438\u0441\u043a\u0430 N \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435 \u0432 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435. \u041a\u043b\u044e\u0447 \u2014 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 int64_t, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u2014 int64_t{1}.<\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/cbb\/fd7\/788\/cbbfd778839ed37158512846104bb0cf.png\" alt=\"\u0411\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u043e\u0438\u0441\u043a\u0430 N \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435 \u0432 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435. \u041a\u043b\u044e\u0447 \u2014 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 std::string, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u2014 int64_t{1}.\" title=\"\u0411\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u043e\u0438\u0441\u043a\u0430 N \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435 \u0432 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435. \u041a\u043b\u044e\u0447 \u2014 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 std::string, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u2014 int64_t{1}.\" width=\"750\" height=\"500\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/cbb\/fd7\/788\/cbbfd778839ed37158512846104bb0cf.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/cbb\/fd7\/788\/cbbfd778839ed37158512846104bb0cf.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0411\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u043e\u0438\u0441\u043a\u0430 N \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435 \u0432 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435. \u041a\u043b\u044e\u0447 \u2014 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 std::string, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u2014 int64_t{1}.<\/figcaption><\/div>\n<\/figure>\n<p>\u0412\u0438\u0434\u0438\u043c, \u0447\u0442\u043e \u043f\u043e\u0438\u0441\u043a \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u0442\u0430\u043b \u043d\u0430\u043c\u043d\u043e\u0433\u043e \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435. \u041d\u043e \u0435\u0441\u043b\u0438 \u043c\u044b \u0437\u0430\u043c\u0435\u0440\u0438\u043c \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438, \u0442\u043e \u044d\u0442\u043e\u0442 \u0433\u0440\u0430\u0444\u0438\u043a \u043d\u0430\u0441 \u043f\u043e\u0440\u0430\u0434\u0443\u0435\u0442 (\u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0437\u0430\u043c\u0435\u0440\u044b \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043b\u0438\u0441\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f <code>int64_t<\/code>).<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/bef\/102\/dfb\/bef102dfb9a8efdd07f1cc954769c897.png\" alt=\"\u0411\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438 \u043f\u043e N \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435. \u041a\u043b\u044e\u0447 \u2014 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 int64_t, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u2014 int64_t{1}.\" title=\"\u0411\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438 \u043f\u043e N \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435. \u041a\u043b\u044e\u0447 \u2014 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 int64_t, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u2014 int64_t{1}.\" width=\"750\" height=\"500\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/bef\/102\/dfb\/bef102dfb9a8efdd07f1cc954769c897.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/bef\/102\/dfb\/bef102dfb9a8efdd07f1cc954769c897.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0411\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438 \u043f\u043e N \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435. \u041a\u043b\u044e\u0447 \u2014 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 int64_t, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u2014 int64_t{1}.<\/figcaption><\/div>\n<\/figure>\n<p>\u041f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u0431\u044b\u0441\u0442\u0440\u043e!<\/p>\n<p>\u041d\u0443\u0436\u043d\u043e \u043b\u0438 \u043d\u0430\u043c \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435 \u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u043f\u0440\u0438 \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u043e \u0441\u0432\u043e\u0435\u0439 \u043f\u0440\u0438\u0440\u043e\u0434\u0435 \u043f\u043b\u043e\u0441\u043a\u0438\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0441\u043e\u0437\u0434\u0430\u043d\u044b \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0432 \u043d\u0438\u0445 \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0432\u0441\u0451 \u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0438 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u2014 \u0432\u043e\u043f\u0440\u043e\u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439, \u043d\u043e, \u0442\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435, \u0441\u043f\u0430\u0441\u0438\u0431\u043e ETL \u0437\u0430 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0443\u044e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e.<\/p>\n<h2>\u0417\u0430\u043c\u0435\u0440\u044b<\/h2>\n<p>\u041d\u0430\u043a\u043e\u043d\u0435\u0446, \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043c \u0442\u043e\u0447\u043a\u0443 \u0432 \u0432\u043e\u043f\u0440\u043e\u0441\u0435, \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u043b\u0438 \u0432 \u043f\u043b\u043e\u0441\u043a\u0438\u0445 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u0445 \u043f\u043e\u0438\u0441\u043a, \u0447\u0435\u043c \u043d\u0435 \u0432 \u043f\u043b\u043e\u0441\u043a\u0438\u0445. \u041d\u043e \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u043c\u0435\u043b\u043e\u0447\u0438\u0442\u044c\u0441\u044f, \u0438 \u0441\u0440\u0430\u0432\u043d\u0438\u043c \u043f\u043b\u043e\u0441\u043a\u0438\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u0438\u0445 \u043d\u0435 \u043f\u043b\u043e\u0441\u043a\u0438\u043c\u0438 \u0430\u043d\u0430\u043b\u043e\u0433\u0430\u043c\u0438, \u043d\u043e \u0438 \u0441 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u043c\u0438, \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438 \u043d\u0430 \u0445\u044d\u0448-\u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0445: <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/container\/unordered_set.html\" rel=\"noopener noreferrer nofollow\"><code>std::unordered_set<\/code><\/a>, <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/container\/unordered_map.html\" rel=\"noopener noreferrer nofollow\"><code>std::unordered_map<\/code><\/a>.<\/p>\n<p>\u0417\u0430\u043c\u0435\u0440\u044b \u0431\u0443\u0434\u0435\u043c \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442\u044c \u043f\u043e \u0437\u0430\u0432\u0435\u0442\u0430\u043c \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/tessil.github.io\/2016\/08\/29\/benchmark-hopscotch-map.html\" rel=\"noopener noreferrer nofollow\">\u00abBenchmark of major hash maps implementations\u00bb<\/a> \u0437\u0430 \u0430\u0432\u0442\u043e\u0440\u0441\u0442\u0432\u043e\u043c <a href=\"https:\/\/github.com\/Tessil\" rel=\"noopener noreferrer nofollow\">Tessil (Thibaut Goetghebuer-Planchon)<\/a> \u2014 \u0438\u0437\u043c\u0435\u0440\u0438\u043c \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0432\u0441\u0442\u0430\u0432\u043a\u0438, \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u0438 \u043f\u043e\u0438\u0441\u043a\u0430 \u0434\u043b\u044f \u0442\u0440\u0451\u0445 \u0432\u0438\u0434\u043e\u0432 \u043a\u043b\u044e\u0447\u0435\u0439-\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439: <code>int64_t<\/code> \u2014 <code>int64_t<\/code>, <code>string<\/code> (15 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432) \u2014 <code>int64_t<\/code>, <code>string\u00a0<\/code>(50 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432) \u2014 <code>int64_t<\/code>. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u044d\u0442\u043e \u043f\u0440\u0438 \u0440\u0430\u0437\u043d\u043e\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0430\u0440: 200&#8217;000 \u043f\u0430\u0440, 400&#8217;000 \u043f\u0430\u0440, \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435 \u0434\u043e 3&#8217;000&#8217;000 \u043f\u0430\u0440 \u0441 \u0448\u0430\u0433\u043e\u043c 200&#8217;000 (<span class=\"habrahidden\">\u043a\u0440\u043e\u043c\u0435 \u044d\u0442\u043e\u0433\u043e \u044f \u0441\u0434\u0435\u043b\u0430\u043b \u0437\u0430\u043c\u0435\u0440\u044b \u0434\u043b\u044f 10\u2013100 \u043f\u0430\u0440 \u0441 \u0448\u0430\u0433\u043e\u043c 10 \u0438 \u0434\u043b\u044f 20&#8217;000\u2013100&#8217;000 \u043f\u0430\u0440 \u0441 \u0448\u0430\u0433\u043e\u043c 20&#8217;000, \u043d\u043e \u043f\u043e\u0442\u043e\u043c \u0440\u0435\u0448\u0438\u043b, \u0447\u0442\u043e \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043e\u0431\u0441\u0443\u0436\u0434\u0430\u0442\u044c \u044d\u0442\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0431\u0435\u0441\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u043d\u043e \u2014 \u043f\u043e \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u043e\u043d\u0438 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u044e\u0442 \u0441 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c\u0438 \u0434\u043b\u044f 200&#8217;000\u20133&#8217;000&#8217;000 \u043f\u0430\u0440, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u0435\u0447\u0438 \u043e \u043d\u0438\u0445 \u0434\u0430\u043b\u0435\u0435 \u0432\u0435\u0441\u0442\u0438\u0441\u044c \u043d\u0435 \u0431\u0443\u0434\u0435\u0442, \u0445\u043e\u0442\u044c \u0438\u0445 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0432\u044b \u0442\u0430\u043a \u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043f\u043e\u0434 \u0441\u043f\u043e\u0439\u043b\u0435\u0440\u043e\u043c \u043d\u0438\u0436\u0435<\/span>). \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0438\u0437\u043c\u0435\u0440\u0438\u043c \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u043a\u043b\u044e\u0447\u0435\u0439-\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 <code>int64_t<\/code> \u2014 <code>int64_t.<\/code>\u041a\u0430\u0436\u0434\u043e\u0435 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u043c \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0442\u044c \u043f\u044f\u0442\u044c \u0440\u0430\u0437, \u0430 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0438\u0442\u043e\u0433\u043e\u0432\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432\u044b\u0431\u0438\u0440\u0430\u0442\u044c \u043d\u0430\u0438\u043b\u0443\u0447\u0448\u0438\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442. \u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 \u0432\u0441\u0435\u0445 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u043e\u0432 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u043d\u0430 <a href=\"https:\/\/github.com\/eoan-ermine\/hash-table-shootout\/tree\/master\" rel=\"noopener noreferrer nofollow\">github<\/a>, \u0437\u0430\u043c\u0435\u0440\u044b \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043b\u0438\u0441\u044c \u043d\u0430 Linux 6.8.0, Intel\u00ae Xeon\u00ae Gold 6354 3 \u0413\u0413\u0446, 8 \u0413\u0431 \u041e\u0417\u0423, \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440: clang 21.0.0, \u043e\u043f\u0446\u0438\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438: <code>-stdlib=libc++ -O3 -march=native -std=c++23<\/code>.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0446\u0435\u043b\u0438\u043a\u043e\u043c, \u0434\u043e\u0431\u0440\u043e \u043f\u043e\u0436\u0430\u043b\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0434 \u0441\u043f\u043e\u0439\u043b\u0435\u0440 (\u043e\u0441\u0442\u043e\u0440\u043e\u0436\u043d\u043e, \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e \u0431\u0443\u043a\u0432 \u0438 \u0433\u0440\u0430\u0444\u0438\u043a\u043e\u0432). \u0410 \u0434\u0430\u043b\u0435\u0435 \u043c\u044b \u043b\u0438\u0448\u044c \u043f\u043e\u0434\u0432\u0435\u0434\u0435\u043c \u0438\u0442\u043e\u0433\u0438.<\/p>\n<details class=\"spoiler\">\n<summary>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u043e\u0432<\/summary>\n<div class=\"spoiler__content\">\n<details class=\"spoiler\">\n<summary>\u0414\u0438\u0430\u043f\u0430\u0437\u043e\u043d 10\u2013100 (\u0448\u0430\u0433 10)<\/summary>\n<div class=\"spoiler__content\">\n<p>\u041d\u0430 \u0432\u0441\u0435\u0445 \u0433\u0440\u0430\u0444\u0438\u043a\u0430\u0445 \u043d\u0438\u0436\u0435 \u043f\u043e \u043e\u0441\u0438 X \u2014 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0430\u0440 \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435 (\u0448\u0442.), \u043f\u043e \u043e\u0441\u0438 Y \u2014 \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b (\u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445 \u0438\u043b\u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445 \u2014 \u0441\u043c. \u043f\u043e\u0434\u043f\u0438\u0441\u0438 \u043d\u0430 \u0433\u0440\u0430\u0444\u0438\u043a\u0430\u0445) \u0438\u043b\u0438 \u043e\u0431\u044a\u0435\u043c \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u043c\u043e\u0439 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u043c \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 (\u0432 \u041c\u0431\u0438\u0442 \u0438\u043b\u0438 \u041a\u0431\u0438\u0442 \u2014 \u0441\u043c. \u043f\u043e\u0434\u043f\u0438\u0441\u0438 \u043d\u0430 \u0433\u0440\u0430\u0444\u0438\u043a\u0430\u0445).<\/p>\n<details class=\"spoiler\">\n<summary>int64_t \u2014 int64_t<\/summary>\n<div class=\"spoiler__content\">\n<h4>\u0412\u0441\u0442\u0430\u0432\u043a\u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0439 \u043f\u043e\u0440\u044f\u0434\u043a\u0435<\/h4>\n<p>\u041f\u0435\u0440\u0435\u0434 \u043a\u0430\u0436\u0434\u044b\u043c \u0437\u0430\u043c\u0435\u0440\u043e\u043c \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0435\u043c <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/container\/vector.html\" rel=\"noopener noreferrer nofollow\"><code>std::vector<\/code><\/a> \u0441 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438 <img decoding=\"async\" class=\"formula inline\" source=\"[0, N)\" alt=\"[0, N)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b50\/c98\/c24\/b50c98c2455ca85ca8b38d24507d1715.svg\" width=\"52\" height=\"24\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b50\/c98\/c24\/b50c98c2455ca85ca8b38d24507d1715.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b50\/c98\/c24\/b50c98c2455ca85ca8b38d24507d1715.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u0448\u0438\u0432\u0430\u0435\u043c \u044d\u0442\u043e\u0442 \u0432\u0435\u043a\u0442\u043e\u0440 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>std::shuffle<\/code>. \u0417\u0430\u0442\u0435\u043c \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f <img decoding=\"async\" class=\"formula inline\" source=\"k\" alt=\"k\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/447\/6c8\/461\/4476c846171d509aeafe76a5d9e2be0d.svg\" width=\"11\" height=\"18\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/447\/6c8\/461\/4476c846171d509aeafe76a5d9e2be0d.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/447\/6c8\/461\/4476c846171d509aeafe76a5d9e2be0d.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0432 \u0432\u0435\u043a\u0442\u043e\u0440\u0435 \u043c\u044b \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u043f\u0430\u0440\u0443 \u043a\u043b\u044e\u0447-\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <img decoding=\"async\" class=\"formula inline\" source=\"(k, 1)\" alt=\"(k, 1)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/7ba\/9b7\/af8\/7ba9b7af8d2187104909a6e56e064c95.svg\" width=\"46\" height=\"24\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/7ba\/9b7\/af8\/7ba9b7af8d2187104909a6e56e064c95.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/7ba\/9b7\/af8\/7ba9b7af8d2187104909a6e56e064c95.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/a4a\/ed6\/061\/a4aed606171fe7ab3e1fa6d3c0c3962c.png\" alt=\"\" title=\"\" width=\"750\" height=\"500\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/a4a\/ed6\/061\/a4aed606171fe7ab3e1fa6d3c0c3962c.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/a4a\/ed6\/061\/a4aed606171fe7ab3e1fa6d3c0c3962c.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<h4>\u0412\u0441\u0442\u0430\u0432\u043a\u0438 \u043f\u0430\u0440 \u0441 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c<\/h4>\n<p>\u041f\u0435\u0440\u0435\u0434 \u043a\u0430\u0436\u0434\u044b\u043c \u0437\u0430\u043c\u0435\u0440\u043e\u043c \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0435\u043c <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/container\/vector.html\" rel=\"noopener noreferrer nofollow\"><code>std::vector<\/code><\/a> \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c <img decoding=\"async\" class=\"formula inline\" source=\"N\" alt=\"N\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5c4\/6aa\/476\/5c46aa47668684a785562b1588e2ad18.svg\" width=\"18\" height=\"18\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5c4\/6aa\/476\/5c46aa47668684a785562b1588e2ad18.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5c4\/6aa\/476\/5c46aa47668684a785562b1588e2ad18.svg 781w\" loading=\"lazy\" decode=\"async\"\/>, \u0433\u0434\u0435 \u043a\u0430\u0436\u0434\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0435\u0434\u0438\u043d\u044b\u043c \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u043c (\u043f\u0441\u0435\u0432\u0434\u043e)\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b \u0438\u0437 \u0432\u0441\u0435\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c <code>int64_t<\/code>. \u0417\u0430\u0442\u0435\u043c \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f <img decoding=\"async\" class=\"formula inline\" source=\"k\" alt=\"k\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ac0\/2bb\/a5b\/ac02bba5b8a119aa4fa0ab5ac2f40bf5.svg\" width=\"11\" height=\"18\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ac0\/2bb\/a5b\/ac02bba5b8a119aa4fa0ab5ac2f40bf5.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ac0\/2bb\/a5b\/ac02bba5b8a119aa4fa0ab5ac2f40bf5.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0432 \u0432\u0435\u043a\u0442\u043e\u0440\u0435 \u043c\u044b \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u043f\u0430\u0440\u0443 \u043a\u043b\u044e\u0447-\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <img decoding=\"async\" class=\"formula inline\" source=\"(k, 1)\" alt=\"(k, 1)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ae4\/ce5\/436\/ae4ce54363fe7f21547c7058404e7d70.svg\" width=\"46\" height=\"24\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ae4\/ce5\/436\/ae4ce54363fe7f21547c7058404e7d70.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ae4\/ce5\/436\/ae4ce54363fe7f21547c7058404e7d70.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/ff3\/c62\/880\/ff3c62880674a8d93dd33bc8f90863ad.png\" alt=\"\" title=\"\" width=\"750\" height=\"500\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/ff3\/c62\/880\/ff3c62880674a8d93dd33bc8f90863ad.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/ff3\/c62\/880\/ff3c62880674a8d93dd33bc8f90863ad.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0413\u0440\u0430\u0444\u0438\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d \u043d\u0438\u0436\u0435.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/975\/e15\/fb7\/975e15fb7cd0d151551e932e662bf9c7.png\" alt=\"\" title=\"\" width=\"750\" height=\"500\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/975\/e15\/fb7\/975e15fb7cd0d151551e932e662bf9c7.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/975\/e15\/fb7\/975e15fb7cd0d151551e932e662bf9c7.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<h4>\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043f\u0430\u0440 \u0441 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c<\/h4>\n<p>\u041f\u0435\u0440\u0435\u0434 \u043a\u0430\u0436\u0434\u044b\u043c \u0437\u0430\u043c\u0435\u0440\u043e\u043c \u043c\u044b \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c <img decoding=\"async\" class=\"formula inline\" source=\"N\" alt=\"N\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2fa\/af4\/4b9\/2faaf44b948beb466aa78cf3e6cb9744.svg\" width=\"18\" height=\"18\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2fa\/af4\/4b9\/2faaf44b948beb466aa78cf3e6cb9744.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2fa\/af4\/4b9\/2faaf44b948beb466aa78cf3e6cb9744.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0442\u0430\u043a\u0438\u043c \u0436\u0435 \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043a\u0430\u043a \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u0442\u0435\u0441\u0442\u0435 \u00ab\u0412\u0441\u0442\u0430\u0432\u043a\u0438 \u043f\u0430\u0440 \u0441 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c\u00bb. \u0417\u0430\u0442\u0435\u043c \u043c\u044b \u0443\u0434\u0430\u043b\u044f\u0435\u043c \u043a\u0430\u0436\u0434\u044b\u0439 \u043a\u043b\u044e\u0447 \u043e\u0434\u0438\u043d \u0437\u0430 \u0434\u0440\u0443\u0433\u0438\u043c \u0432 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435, \u043e\u0442\u043b\u0438\u0447\u043d\u043e\u043c \u043e\u0442 \u0442\u043e\u0433\u043e, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u043d\u0438 \u0431\u044b\u043b\u0438 \u0432\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/0f5\/7c5\/157\/0f57c515712b368785aeda7e99dc3f29.png\" alt=\"\" title=\"\" width=\"750\" height=\"500\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/0f5\/7c5\/157\/0f57c515712b368785aeda7e99dc3f29.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/0f5\/7c5\/157\/0f57c515712b368785aeda7e99dc3f29.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<h4>\u041f\u043e\u0438\u0441\u043a \u043f\u0430\u0440<\/h4>\n<p>\u041f\u0435\u0440\u0435\u0434 \u043a\u0430\u0436\u0434\u044b\u043c \u0437\u0430\u043c\u0435\u0440\u043e\u043c \u043c\u044b \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c <img decoding=\"async\" class=\"formula inline\" source=\"N\" alt=\"N\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/def\/1b4\/14f\/def1b414f710f91b5137d0b02e0fcd6d.svg\" width=\"18\" height=\"18\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/def\/1b4\/14f\/def1b414f710f91b5137d0b02e0fcd6d.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/def\/1b4\/14f\/def1b414f710f91b5137d0b02e0fcd6d.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0442\u0430\u043a\u0438\u043c \u0436\u0435 \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043a\u0430\u043a \u0432 \u0442\u0435\u0441\u0442\u0435 \u00ab\u0412\u0441\u0442\u0430\u0432\u043a\u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0439 \u043f\u043e\u0440\u044f\u0434\u043a\u0435\u00bb. \u0417\u0430\u0442\u0435\u043c \u043c\u044b \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c \u043a\u0430\u0436\u0434\u0443\u044e \u043f\u0430\u0440\u0443 \u043a\u043b\u044e\u0447-\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435, \u043e\u0442\u043b\u0438\u0447\u043d\u043e\u043c \u043e\u0442 \u0442\u043e\u0433\u043e, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u043d\u0438 \u0431\u044b\u043b\u0438 \u0432\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/42f\/b20\/d1a\/42fb20d1a3dda9495b54ed4c55adac9e.png\" alt=\"\" title=\"\" width=\"750\" height=\"500\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/42f\/b20\/d1a\/42fb20d1a3dda9495b54ed4c55adac9e.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/42f\/b20\/d1a\/42fb20d1a3dda9495b54ed4c55adac9e.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<h4>\u041f\u043e\u0438\u0441\u043a \u043f\u0430\u0440 \u0441 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c<\/h4>\n<p>\u041f\u0435\u0440\u0435\u0434 \u043a\u0430\u0436\u0434\u044b\u043c \u0437\u0430\u043c\u0435\u0440\u043e\u043c \u043c\u044b \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c <img decoding=\"async\" class=\"formula inline\" source=\"N\" alt=\"N\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/7b4\/2cd\/a66\/7b42cda6611a494fb913b2d1caa05649.svg\" width=\"18\" height=\"18\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/7b4\/2cd\/a66\/7b42cda6611a494fb913b2d1caa05649.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/7b4\/2cd\/a66\/7b42cda6611a494fb913b2d1caa05649.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0442\u0430\u043a\u0438\u043c \u0436\u0435 \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043a\u0430\u043a \u0432 \u0442\u0435\u0441\u0442\u0435 \u00ab\u0412\u0441\u0442\u0430\u0432\u043a\u0438 \u043f\u0430\u0440 \u0441 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c\u00bb. \u0417\u0430\u0442\u0435\u043c \u043c\u044b \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c \u043a\u0430\u0436\u0434\u0443\u044e \u043f\u0430\u0440\u0443 \u043a\u043b\u044e\u0447-\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435, \u043e\u0442\u043b\u0438\u0447\u043d\u043e\u043c \u043e\u0442 \u0442\u043e\u0433\u043e, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u043d\u0438 \u0431\u044b\u043b\u0438 \u0432\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/391\/dfa\/9af\/391dfa9af82d9fb1e5cbddf2a8ec70b5.png\" alt=\"\" title=\"\" width=\"750\" height=\"500\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/391\/dfa\/9af\/391dfa9af82d9fb1e5cbddf2a8ec70b5.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/391\/dfa\/9af\/391dfa9af82d9fb1e5cbddf2a8ec70b5.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<h4>\u041f\u043e\u0438\u0441\u043a \u043d\u0435\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043f\u0430\u0440<\/h4>\n<p>\u041f\u0435\u0440\u0435\u0434 \u043a\u0430\u0436\u0434\u044b\u043c \u0437\u0430\u043c\u0435\u0440\u043e\u043c \u043c\u044b \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c <img decoding=\"async\" class=\"formula inline\" source=\"N\" alt=\"N\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/991\/427\/b5f\/991427b5f28f4eeaaa08a628aa216bcb.svg\" width=\"18\" height=\"18\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/991\/427\/b5f\/991427b5f28f4eeaaa08a628aa216bcb.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/991\/427\/b5f\/991427b5f28f4eeaaa08a628aa216bcb.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0442\u0430\u043a\u0438\u043c \u0436\u0435 \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043a\u0430\u043a \u0432 \u0442\u0435\u0441\u0442\u0435 \u00ab\u0412\u0441\u0442\u0430\u0432\u043a\u0438 \u043f\u0430\u0440 \u0441 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c\u00bb. \u0417\u0430\u0442\u0435\u043c \u043c\u044b \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c \u0434\u0440\u0443\u0433\u043e\u0439 \u0432\u0435\u043a\u0442\u043e\u0440 <img decoding=\"async\" class=\"formula inline\" source=\"N\" alt=\"N\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/fc5\/6ac\/2a8\/fc56ac2a87c05e7b38708c91f5ad15c6.svg\" width=\"18\" height=\"18\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/fc5\/6ac\/2a8\/fc56ac2a87c05e7b38708c91f5ad15c6.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/fc5\/6ac\/2a8\/fc56ac2a87c05e7b38708c91f5ad15c6.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0449\u0438\u0439\u0441\u044f \u043e\u0442 \u0432\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u0438 \u043f\u044b\u0442\u0430\u0435\u043c\u0441\u044f \u043d\u0430\u0439\u0442\u0438 \u044d\u0442\u0438 \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/cc2\/a14\/8e5\/cc2a148e55dfad83662dd97e6dd5aaf5.png\" alt=\"\" title=\"\" width=\"750\" height=\"500\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/cc2\/a14\/8e5\/cc2a148e55dfad83662dd97e6dd5aaf5.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/cc2\/a14\/8e5\/cc2a148e55dfad83662dd97e6dd5aaf5.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<h4>\u041f\u043e\u0438\u0441\u043a \u043f\u043e\u0441\u043b\u0435 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u044b<\/h4>\n<p>\u041f\u0435\u0440\u0435\u0434 \u043a\u0430\u0436\u0434\u044b\u043c \u0437\u0430\u043c\u0435\u0440\u043e\u043c \u043c\u044b \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c <img decoding=\"async\" class=\"formula inline\" source=\"nb\\_entries\" alt=\"nb\\_entries\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4fc\/0d0\/6f1\/4fc0d06f1326fd0c98fcb576c4e08ab6.svg\" width=\"97\" height=\"19\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4fc\/0d0\/6f1\/4fc0d06f1326fd0c98fcb576c4e08ab6.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4fc\/0d0\/6f1\/4fc0d06f1326fd0c98fcb576c4e08ab6.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0442\u0430\u043a\u0438\u043c \u0436\u0435 \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043a\u0430\u043a \u0432 \u0442\u0435\u0441\u0442\u0435 \u00ab\u0412\u0441\u0442\u0430\u0432\u043a\u0438 \u043f\u0430\u0440 \u0441 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c\u00bb, \u0430 \u0437\u0430\u0442\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0443\u0434\u0430\u043b\u044f\u0435\u043c \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0443 \u044d\u0442\u0438\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439. \u0417\u0430\u0442\u0435\u043c \u043c\u044b \u043f\u044b\u0442\u0430\u0435\u043c\u0441\u044f \u043d\u0430\u0439\u0442\u0438 \u0432\u0441\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u0434\u0440\u0443\u0433\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435, \u0447\u0442\u043e \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a 50% \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0439 \u0438 50% \u043f\u0440\u043e\u043c\u0430\u0445\u043e\u0432.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/6f0\/fb9\/da6\/6f0fb9da67c1736f035752c8fa8bf0da.png\" alt=\"\" title=\"\" width=\"750\" height=\"500\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/6f0\/fb9\/da6\/6f0fb9da67c1736f035752c8fa8bf0da.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/6f0\/fb9\/da6\/6f0fb9da67c1736f035752c8fa8bf0da.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<h4>\u0418\u0442\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435<\/h4>\n<p>\u041f\u0435\u0440\u0435\u0434 \u043a\u0430\u0436\u0434\u044b\u043c \u0437\u0430\u043c\u0435\u0440\u043e\u043c \u043c\u044b \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c <img decoding=\"async\" class=\"formula inline\" source=\"N\" alt=\"N\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/dc3\/b30\/6cb\/dc3b306cbb83a1254d56369327f1dd31.svg\" width=\"18\" height=\"18\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/dc3\/b30\/6cb\/dc3b306cbb83a1254d56369327f1dd31.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/dc3\/b30\/6cb\/dc3b306cbb83a1254d56369327f1dd31.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0442\u0430\u043a\u0438\u043c \u0436\u0435 \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043a\u0430\u043a \u0432 \u0442\u0435\u0441\u0442\u0435 \u00ab\u0412\u0441\u0442\u0430\u0432\u043a\u0438 \u043f\u0430\u0440 \u0441 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c\u00bb. \u0417\u0430\u0442\u0435\u043c \u043c\u044b \u0438\u0442\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u0441\u044f \u043f\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0443, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u044f \u0432\u0441\u0435 \u043f\u0430\u0440\u044b \u043a\u043b\u044e\u0447-\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/24b\/b9b\/f8a\/24bb9bf8a275dafe3cd24f1e34ed463f.png\" alt=\"\" title=\"\" width=\"750\" height=\"500\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/24b\/b9b\/f8a\/24bb9bf8a275dafe3cd24f1e34ed463f.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/24b\/b9b\/f8a\/24bb9bf8a275dafe3cd24f1e34ed463f.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<\/div>\n<\/details>\n<details class=\"spoiler\">\n<summary>string (15 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432) \u2014 int64_t<\/summary>\n<div class=\"spoiler__content\">\n<h4>\u0412\u0441\u0442\u0430\u0432\u043a\u0438 \u043f\u0430\u0440 \u0441 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c<\/h4>\n<p>\u041c\u044b <img decoding=\"async\" class=\"formula inline\" source=\"N\" alt=\"N\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b86\/74d\/d65\/b8674dd659d1a7694de623a35c83ea8c.svg\" width=\"18\" height=\"18\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b86\/74d\/d65\/b8674dd659d1a7694de623a35c83ea8c.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b86\/74d\/d65\/b8674dd659d1a7694de623a35c83ea8c.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0440\u0430\u0437 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c \u0441\u0442\u0440\u043e\u043a\u0443-\u043a\u043b\u044e\u0447 \u0438 \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0435\u0435 \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0441 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c <code>std::int64_t{1}<\/code>.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/330\/d74\/db0\/330d74db03015e170066adfb8640d6c0.png\" alt=\"\" title=\"\" width=\"750\" height=\"500\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/330\/d74\/db0\/330d74db03015e170066adfb8640d6c0.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/330\/d74\/db0\/330d74db03015e170066adfb8640d6c0.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0413\u0440\u0430\u0444\u0438\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d \u043d\u0438\u0436\u0435.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/21f\/f9c\/37f\/21ff9c37f03b35e81a50e2510ce91d88.png\" alt=\"\" title=\"\" width=\"750\" height=\"500\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/21f\/f9c\/37f\/21ff9c37f03b35e81a50e2510ce91d88.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/21f\/f9c\/37f\/21ff9c37f03b35e81a50e2510ce91d88.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<h4>\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043f\u0430\u0440 \u0441 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c<\/h4>\n<p>\u041f\u0435\u0440\u0435\u0434 \u043a\u0430\u0436\u0434\u044b\u043c \u0437\u0430\u043c\u0435\u0440\u043e\u043c \u043c\u044b \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c <img decoding=\"async\" class=\"formula inline\" source=\"N\" alt=\"N\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/764\/823\/56d\/76482356d9d00dbedf1c3926a07093ee.svg\" width=\"18\" height=\"18\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/764\/823\/56d\/76482356d9d00dbedf1c3926a07093ee.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/764\/823\/56d\/76482356d9d00dbedf1c3926a07093ee.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440, \u043a\u0430\u043a \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u0442\u0435\u0441\u0442\u0435 \u00ab\u0412\u0441\u0442\u0430\u0432\u043a\u0438 \u043f\u0430\u0440 \u0441 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c\u00bb. \u0417\u0430\u0442\u0435\u043c \u043c\u044b \u0443\u0434\u0430\u043b\u044f\u0435\u043c \u043a\u0430\u0436\u0434\u044b\u0439 \u043a\u043b\u044e\u0447 \u043e\u0434\u0438\u043d \u0437\u0430 \u0434\u0440\u0443\u0433\u0438\u043c \u0432 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435, \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u043c \u043e\u0442 \u0442\u043e\u0433\u043e, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u043d\u0438 \u0431\u044b\u043b\u0438 \u0432\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/5c7\/75f\/b10\/5c775fb10258beef3c5369fe86d84b03.png\" alt=\"\" title=\"\" width=\"750\" height=\"500\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/5c7\/75f\/b10\/5c775fb10258beef3c5369fe86d84b03.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/5c7\/75f\/b10\/5c775fb10258beef3c5369fe86d84b03.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<h4>\u041f\u043e\u0438\u0441\u043a \u043f\u0430\u0440 \u0441 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c<\/h4>\n<p>\u041f\u0435\u0440\u0435\u0434 \u043a\u0430\u0436\u0434\u044b\u043c \u0437\u0430\u043c\u0435\u0440\u043e\u043c \u043c\u044b \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c <img decoding=\"async\" class=\"formula inline\" source=\"N\" alt=\"N\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f77\/acc\/732\/f77acc73214c5b5976317b130fd6c309.svg\" width=\"18\" height=\"18\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f77\/acc\/732\/f77acc73214c5b5976317b130fd6c309.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f77\/acc\/732\/f77acc73214c5b5976317b130fd6c309.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440, \u043a\u0430\u043a \u0432 \u0442\u0435\u0441\u0442\u0435 \u00ab\u0412\u0441\u0442\u0430\u0432\u043a\u0438 \u043f\u0430\u0440 \u0441 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c\u00bb. \u0417\u0430\u0442\u0435\u043c \u043c\u044b \u0438\u0449\u0435\u043c \u043a\u0430\u0436\u0434\u044b\u0439 \u043a\u043b\u044e\u0447 \u043e\u0434\u0438\u043d \u0437\u0430 \u0434\u0440\u0443\u0433\u0438\u043c \u0432 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435, \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u043c \u043e\u0442 \u0442\u043e\u0433\u043e, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u043d\u0438 \u0431\u044b\u043b\u0438 \u0432\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/0ff\/231\/b5a\/0ff231b5ae2595e0e1c98a614ecc8a70.png\" alt=\"\" title=\"\" width=\"750\" height=\"500\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/0ff\/231\/b5a\/0ff231b5ae2595e0e1c98a614ecc8a70.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/0ff\/231\/b5a\/0ff231b5ae2595e0e1c98a614ecc8a70.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<h4>\u041f\u043e\u0438\u0441\u043a \u043d\u0435\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043f\u0430\u0440<\/h4>\n<p>\u041f\u0435\u0440\u0435\u0434 \u043a\u0430\u0436\u0434\u044b\u043c \u0437\u0430\u043c\u0435\u0440\u043e\u043c \u043c\u044b \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c <img decoding=\"async\" class=\"formula inline\" source=\"N\" alt=\"N\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b77\/bf0\/6f9\/b77bf06f9e70751cda5d3a2fc1d6d390.svg\" width=\"18\" height=\"18\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b77\/bf0\/6f9\/b77bf06f9e70751cda5d3a2fc1d6d390.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b77\/bf0\/6f9\/b77bf06f9e70751cda5d3a2fc1d6d390.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0442\u0430\u043a\u0438\u043c \u0436\u0435 \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043a\u0430\u043a \u0432 \u0442\u0435\u0441\u0442\u0435 \u00ab\u0412\u0441\u0442\u0430\u0432\u043a\u0438 \u043f\u0430\u0440 \u0441 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c\u00bb. \u0417\u0430\u0442\u0435\u043c \u043c\u044b \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c \u0434\u0440\u0443\u0433\u043e\u0439 \u0432\u0435\u043a\u0442\u043e\u0440 <img decoding=\"async\" class=\"formula inline\" source=\"nb\\_entries\" alt=\"nb\\_entries\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a3d\/b5c\/b42\/a3db5cb4265cbd322b5a573d6d17b65a.svg\" width=\"97\" height=\"19\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a3d\/b5c\/b42\/a3db5cb4265cbd322b5a573d6d17b65a.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a3d\/b5c\/b42\/a3db5cb4265cbd322b5a573d6d17b65a.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0441\u0442\u0440\u043e\u043a, \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0449\u0438\u0439\u0441\u044f \u043e\u0442 \u0432\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u0438 \u043f\u044b\u0442\u0430\u0435\u043c\u0441\u044f \u043d\u0430\u0439\u0442\u0438 \u044d\u0442\u0438 \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d11\/54a\/e10\/d1154ae10fdca22c887875fedf39099f.png\" alt=\"\" title=\"\" width=\"750\" height=\"500\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/d11\/54a\/e10\/d1154ae10fdca22c887875fedf39099f.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d11\/54a\/e10\/d1154ae10fdca22c887875fedf39099f.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<h4>\u041f\u043e\u0438\u0441\u043a \u043f\u043e\u0441\u043b\u0435 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u044b<\/h4>\n<p>\u041f\u0435\u0440\u0435\u0434 \u043a\u0430\u0436\u0434\u044b\u043c \u0437\u0430\u043c\u0435\u0440\u043e\u043c \u043c\u044b \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c <img decoding=\"async\" class=\"formula inline\" source=\"N\" alt=\"N\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/93b\/38b\/e21\/93b38be217eef189d86bfb62f6721b41.svg\" width=\"18\" height=\"18\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/93b\/38b\/e21\/93b38be217eef189d86bfb62f6721b41.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/93b\/38b\/e21\/93b38be217eef189d86bfb62f6721b41.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0442\u0430\u043a\u0438\u043c \u0436\u0435 \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043a\u0430\u043a \u0432 \u0442\u0435\u0441\u0442\u0435 \u00ab\u0412\u0441\u0442\u0430\u0432\u043a\u0438 \u043f\u0430\u0440 \u0441 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c\u00bb, \u0430 \u0437\u0430\u0442\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0443\u0434\u0430\u043b\u044f\u0435\u043c \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0443 \u044d\u0442\u0438\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439. \u0417\u0430\u0442\u0435\u043c \u043c\u044b \u043f\u044b\u0442\u0430\u0435\u043c\u0441\u044f \u043d\u0430\u0439\u0442\u0438 \u0432\u0441\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u0434\u0440\u0443\u0433\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435, \u0447\u0442\u043e \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a 50% \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0439 \u0438 50% \u043f\u0440\u043e\u043c\u0430\u0445\u043e\u0432.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e5b\/b29\/cb1\/e5bb29cb177ee79ec676afa740cae143.png\" alt=\"\" title=\"\" width=\"750\" height=\"500\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/e5b\/b29\/cb1\/e5bb29cb177ee79ec676afa740cae143.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e5b\/b29\/cb1\/e5bb29cb177ee79ec676afa740cae143.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<\/div>\n<\/details>\n<details class=\"spoiler\">\n<summary>string (50 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432) \u2014 int64_t <\/summary>\n<div class=\"spoiler__content\">\n<h4>\u0412\u0441\u0442\u0430\u0432\u043a\u0438 \u043f\u0430\u0440 \u0441 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c<\/h4>\n<p>\u041c\u044b <img decoding=\"async\" class=\"formula inline\" source=\"N\" alt=\"N\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f6c\/d84\/78a\/f6cd8478a72a23e9c427cb6a5b14bd62.svg\" width=\"18\" height=\"18\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f6c\/d84\/78a\/f6cd8478a72a23e9c427cb6a5b14bd62.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f6c\/d84\/78a\/f6cd8478a72a23e9c427cb6a5b14bd62.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0440\u0430\u0437 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c \u0441\u0442\u0440\u043e\u043a\u0443-\u043a\u043b\u044e\u0447 \u0438 \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0435\u0435 \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0441 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c <code>std::int64_t{1}<\/code>.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/36a\/fea\/a46\/36afeaa46f10f8b07857469056b12fd2.png\" alt=\"\" title=\"\" width=\"750\" height=\"500\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/36a\/fea\/a46\/36afeaa46f10f8b07857469056b12fd2.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/36a\/fea\/a46\/36afeaa46f10f8b07857469056b12fd2.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0413\u0440\u0430\u0444\u0438\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d \u043d\u0438\u0436\u0435.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/6f4\/8b8\/41e\/6f48b841eba201794a364629ee3f42d0.png\" alt=\"\" title=\"\" width=\"750\" height=\"500\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/6f4\/8b8\/41e\/6f48b841eba201794a364629ee3f42d0.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/6f4\/8b8\/41e\/6f48b841eba201794a364629ee3f42d0.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<h4>\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043f\u0430\u0440 \u0441 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c<\/h4>\n<p>\u041f\u0435\u0440\u0435\u0434 \u043a\u0430\u0436\u0434\u044b\u043c \u0437\u0430\u043c\u0435\u0440\u043e\u043c \u043c\u044b \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c <img decoding=\"async\" class=\"formula inline\" source=\"N\" alt=\"N\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/eb9\/ac2\/068\/eb9ac206804bb27db0421504e6975101.svg\" width=\"18\" height=\"18\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/eb9\/ac2\/068\/eb9ac206804bb27db0421504e6975101.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/eb9\/ac2\/068\/eb9ac206804bb27db0421504e6975101.svg 781w\" loading=\"lazy\" decode=\"async\"\/>\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440, \u043a\u0430\u043a \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u0442\u0435\u0441\u0442\u0435 \u00ab\u0412\u0441\u0442\u0430\u0432\u043a\u0438 \u043f\u0430\u0440 \u0441 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c\u00bb. \u0417\u0430\u0442\u0435\u043c \u043c\u044b \u0443\u0434\u0430\u043b\u044f\u0435\u043c \u043a\u0430\u0436\u0434\u044b\u0439 \u043a\u043b\u044e\u0447 \u043e\u0434\u0438\u043d \u0437\u0430 \u0434\u0440\u0443\u0433\u0438\u043c \u0432 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435, \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u043c \u043e\u0442 \u0442\u043e\u0433\u043e, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u043d\u0438 \u0431\u044b\u043b\u0438 \u0432\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e35\/bdf\/30f\/e35bdf30fab4abd6b99b33614cdf184d.png\" alt=\"\" title=\"\" width=\"750\" height=\"500\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/e35\/bdf\/30f\/e35bdf30fab4abd6b99b33614cdf184d.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e35\/bdf\/30f\/e35bdf30fab4abd6b99b33614cdf184d.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<h4>\u041f\u043e\u0438\u0441\u043a \u043f\u0430\u0440 \u0441 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c<\/h4>\n<p>\u041f\u0435\u0440\u0435\u0434 \u043a\u0430\u0436\u0434\u044b\u043c \u0437\u0430\u043c\u0435\u0440\u043e\u043c \u043c\u044b \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c <img decoding=\"async\" class=\"formula inline\" source=\"N\" alt=\"N\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2b4\/61b\/cb6\/2b461bcb6facb74cc14b8e3a84e60d8a.svg\" width=\"18\" height=\"18\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2b4\/61b\/cb6\/2b461bcb6facb74cc14b8e3a84e60d8a.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2b4\/61b\/cb6\/2b461bcb6facb74cc14b8e3a84e60d8a.svg 781w\" loading=\"lazy\" decode=\"async\"\/>\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440, \u043a\u0430\u043a \u0432 \u0442\u0435\u0441\u0442\u0435 \u00ab\u0412\u0441\u0442\u0430\u0432\u043a\u0438 \u043f\u0430\u0440 \u0441 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c\u00bb. \u0417\u0430\u0442\u0435\u043c \u043c\u044b \u0438\u0449\u0435\u043c \u043a\u0430\u0436\u0434\u044b\u0439 \u043a\u043b\u044e\u0447 \u043e\u0434\u0438\u043d \u0437\u0430 \u0434\u0440\u0443\u0433\u0438\u043c \u0432 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435, \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u043c \u043e\u0442 \u0442\u043e\u0433\u043e, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u043d\u0438 \u0431\u044b\u043b\u0438 \u0432\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/20e\/3be\/2a9\/20e3be2a9e456e3034d0b41e48d747cf.png\" alt=\"\" title=\"\" width=\"750\" height=\"500\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/20e\/3be\/2a9\/20e3be2a9e456e3034d0b41e48d747cf.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/20e\/3be\/2a9\/20e3be2a9e456e3034d0b41e48d747cf.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<h4>\u041f\u043e\u0438\u0441\u043a \u043d\u0435\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043f\u0430\u0440<\/h4>\n<p>\u041f\u0435\u0440\u0435\u0434 \u043a\u0430\u0436\u0434\u044b\u043c \u0437\u0430\u043c\u0435\u0440\u043e\u043c \u043c\u044b \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c  \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0442\u0430\u043a\u0438\u043c \u0436\u0435 \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043a\u0430\u043a \u0432 \u0442\u0435\u0441\u0442\u0435 \u00ab\u0412\u0441\u0442\u0430\u0432\u043a\u0438 \u043f\u0430\u0440 \u0441 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c\u00bb. \u0417\u0430\u0442\u0435\u043c \u043c\u044b \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c \u0434\u0440\u0443\u0433\u043e\u0439 \u0432\u0435\u043a\u0442\u043e\u0440  \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0441\u0442\u0440\u043e\u043a, \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0449\u0438\u0439\u0441\u044f \u043e\u0442 \u0432\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u0438 \u043f\u044b\u0442\u0430\u0435\u043c\u0441\u044f \u043d\u0430\u0439\u0442\u0438 \u044d\u0442\u0438 \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/8ad\/485\/f04\/8ad485f04640e7a7c954ecce4454709c.png\" alt=\"\" title=\"\" width=\"750\" height=\"500\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/8ad\/485\/f04\/8ad485f04640e7a7c954ecce4454709c.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/8ad\/485\/f04\/8ad485f04640e7a7c954ecce4454709c.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<h4>\u041f\u043e\u0438\u0441\u043a \u043f\u043e\u0441\u043b\u0435 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u044b<\/h4>\n<p>\u041f\u0435\u0440\u0435\u0434 \u043a\u0430\u0436\u0434\u044b\u043c \u0437\u0430\u043c\u0435\u0440\u043e\u043c \u043c\u044b \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c  \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0442\u0430\u043a\u0438\u043c \u0436\u0435 \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043a\u0430\u043a \u0432 \u0442\u0435\u0441\u0442\u0435 \u00ab\u0412\u0441\u0442\u0430\u0432\u043a\u0438 \u043f\u0430\u0440 \u0441 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c\u00bb, \u0430 \u0437\u0430\u0442\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0443\u0434\u0430\u043b\u044f\u0435\u043c \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0443 \u044d\u0442\u0438\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439. \u0417\u0430\u0442\u0435\u043c \u043c\u044b \u043f\u044b\u0442\u0430\u0435\u043c\u0441\u044f \u043d\u0430\u0439\u0442\u0438 \u0432\u0441\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u0434\u0440\u0443\u0433\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435, \u0447\u0442\u043e \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a 50% \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0439 \u0438 50% \u043f\u0440\u043e\u043c\u0430\u0445\u043e\u0432.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/21d\/1b0\/904\/21d1b09043d6d2698d9d91c4326519f2.png\" alt=\"\" title=\"\" width=\"750\" height=\"500\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/21d\/1b0\/904\/21d1b09043d6d2698d9d91c4326519f2.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/21d\/1b0\/904\/21d1b09043d6d2698d9d91c4326519f2.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<\/div>\n<\/details>\n<\/div>\n<\/details>\n<details class=\"spoiler\">\n<summary>\u0414\u0438\u0430\u043f\u0430\u0437\u043e\u043d 10&#8217;000\u2013100&#8217;000 (\u0448\u0430\u0433 20&#8217;000)<\/summary>\n<div class=\"spoiler__content\">\n<details class=\"spoiler\">\n<summary>int64_t \u2014 int64_t<\/summary>\n<div class=\"spoiler__content\">\n<h4>\u0412\u0441\u0442\u0430\u0432\u043a\u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0439 \u043f\u043e\u0440\u044f\u0434\u043a\u0435<\/h4>\n<p>\u041f\u0435\u0440\u0435\u0434 \u043a\u0430\u0436\u0434\u044b\u043c \u0437\u0430\u043c\u0435\u0440\u043e\u043c \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0435\u043c <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/container\/vector.html\" rel=\"noopener noreferrer nofollow\"><code>std::vector<\/code><\/a> \u0441 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438 <img decoding=\"async\" class=\"formula inline\" source=\"[0, N)\" alt=\"[0, N)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4a3\/76d\/b5b\/4a376db5b24d81d39f0f9c8e82781479.svg\" width=\"52\" height=\"24\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4a3\/76d\/b5b\/4a376db5b24d81d39f0f9c8e82781479.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4a3\/76d\/b5b\/4a376db5b24d81d39f0f9c8e82781479.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u0448\u0438\u0432\u0430\u0435\u043c \u044d\u0442\u043e\u0442 \u0432\u0435\u043a\u0442\u043e\u0440 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>std::shuffle<\/code>. \u0417\u0430\u0442\u0435\u043c \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f <img decoding=\"async\" class=\"formula inline\" source=\"k\" alt=\"k\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/447\/6c8\/461\/4476c846171d509aeafe76a5d9e2be0d.svg\" width=\"11\" height=\"18\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/447\/6c8\/461\/4476c846171d509aeafe76a5d9e2be0d.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/447\/6c8\/461\/4476c846171d509aeafe76a5d9e2be0d.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0432 \u0432\u0435\u043a\u0442\u043e\u0440\u0435 \u043c\u044b \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u043f\u0430\u0440\u0443 \u043a\u043b\u044e\u0447-\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <img decoding=\"async\" class=\"formula inline\" source=\"(k, 1)\" alt=\"(k, 1)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/7ba\/9b7\/af8\/7ba9b7af8d2187104909a6e56e064c95.svg\" width=\"46\" height=\"24\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/7ba\/9b7\/af8\/7ba9b7af8d2187104909a6e56e064c95.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/7ba\/9b7\/af8\/7ba9b7af8d2187104909a6e56e064c95.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/c05\/5b2\/041\/c055b2041d52493228e5c78874c9cc66.png\" alt=\"\" title=\"\" width=\"750\" height=\"500\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/c05\/5b2\/041\/c055b2041d52493228e5c78874c9cc66.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/c05\/5b2\/041\/c055b2041d52493228e5c78874c9cc66.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<h4>\u0412\u0441\u0442\u0430\u0432\u043a\u0438 \u043f\u0430\u0440 \u0441 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c<\/h4>\n<p>\u041f\u0435\u0440\u0435\u0434 \u043a\u0430\u0436\u0434\u044b\u043c \u0437\u0430\u043c\u0435\u0440\u043e\u043c \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0435\u043c <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/container\/vector.html\" rel=\"noopener noreferrer nofollow\"><code>std::vector<\/code><\/a> \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c <img decoding=\"async\" class=\"formula inline\" source=\"N\" alt=\"N\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/418\/66f\/449\/41866f449653bb3a740380b796d817bc.svg\" width=\"18\" height=\"18\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/418\/66f\/449\/41866f449653bb3a740380b796d817bc.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/418\/66f\/449\/41866f449653bb3a740380b796d817bc.svg 781w\" loading=\"lazy\" decode=\"async\"\/>, \u0433\u0434\u0435 \u043a\u0430\u0436\u0434\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0435\u0434\u0438\u043d\u044b\u043c \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u043c (\u043f\u0441\u0435\u0432\u0434\u043e)\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b \u0438\u0437 \u0432\u0441\u0435\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c <code>int64_t<\/code>. \u0417\u0430\u0442\u0435\u043c \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f <img decoding=\"async\" class=\"formula inline\" source=\"k\" alt=\"k\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ac0\/2bb\/a5b\/ac02bba5b8a119aa4fa0ab5ac2f40bf5.svg\" width=\"11\" height=\"18\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ac0\/2bb\/a5b\/ac02bba5b8a119aa4fa0ab5ac2f40bf5.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ac0\/2bb\/a5b\/ac02bba5b8a119aa4fa0ab5ac2f40bf5.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0432 \u0432\u0435\u043a\u0442\u043e\u0440\u0435 \u043c\u044b \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u043f\u0430\u0440\u0443 \u043a\u043b\u044e\u0447-\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <img decoding=\"async\" class=\"formula inline\" source=\"(k, 1)\" alt=\"(k, 1)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ae4\/ce5\/436\/ae4ce54363fe7f21547c7058404e7d70.svg\" width=\"46\" height=\"24\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ae4\/ce5\/436\/ae4ce54363fe7f21547c7058404e7d70.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ae4\/ce5\/436\/ae4ce54363fe7f21547c7058404e7d70.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/357\/2ef\/84f\/3572ef84f8fd3d0224e31511a0a2e745.png\" alt=\"\" title=\"\" width=\"750\" height=\"500\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/357\/2ef\/84f\/3572ef84f8fd3d0224e31511a0a2e745.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/357\/2ef\/84f\/3572ef84f8fd3d0224e31511a0a2e745.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0413\u0440\u0430\u0444\u0438\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d \u043d\u0438\u0436\u0435.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e58\/2af\/a6e\/e582afa6e35e0804aef455c05587fa6f.png\" alt=\"\" title=\"\" width=\"750\" height=\"500\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/e58\/2af\/a6e\/e582afa6e35e0804aef455c05587fa6f.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e58\/2af\/a6e\/e582afa6e35e0804aef455c05587fa6f.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<h4>\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043f\u0430\u0440 \u0441 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c<\/h4>\n<p>\u041f\u0435\u0440\u0435\u0434 \u043a\u0430\u0436\u0434\u044b\u043c \u0437\u0430\u043c\u0435\u0440\u043e\u043c \u043c\u044b \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c <img decoding=\"async\" class=\"formula inline\" source=\"N\" alt=\"N\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/aca\/aee\/8d2\/acaaee8d21c2d0e383ba760ed02fccf7.svg\" width=\"18\" height=\"18\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/aca\/aee\/8d2\/acaaee8d21c2d0e383ba760ed02fccf7.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/aca\/aee\/8d2\/acaaee8d21c2d0e383ba760ed02fccf7.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0442\u0430\u043a\u0438\u043c \u0436\u0435 \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043a\u0430\u043a \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u0442\u0435\u0441\u0442\u0435 \u00ab\u0412\u0441\u0442\u0430\u0432\u043a\u0438 \u043f\u0430\u0440 \u0441 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c\u00bb. \u0417\u0430\u0442\u0435\u043c \u043c\u044b \u0443\u0434\u0430\u043b\u044f\u0435\u043c \u043a\u0430\u0436\u0434\u044b\u0439 \u043a\u043b\u044e\u0447 \u043e\u0434\u0438\u043d \u0437\u0430 \u0434\u0440\u0443\u0433\u0438\u043c \u0432 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435, \u043e\u0442\u043b\u0438\u0447\u043d\u043e\u043c \u043e\u0442 \u0442\u043e\u0433\u043e, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u043d\u0438 \u0431\u044b\u043b\u0438 \u0432\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/abb\/780\/90e\/abb78090e311069930217924117e67ec.png\" alt=\"\" title=\"\" width=\"750\" height=\"500\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/abb\/780\/90e\/abb78090e311069930217924117e67ec.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/abb\/780\/90e\/abb78090e311069930217924117e67ec.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<h4>\u041f\u043e\u0438\u0441\u043a \u043f\u0430\u0440<\/h4>\n<p>\u041f\u0435\u0440\u0435\u0434 \u043a\u0430\u0436\u0434\u044b\u043c \u0437\u0430\u043c\u0435\u0440\u043e\u043c \u043c\u044b \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c <img decoding=\"async\" class=\"formula inline\" source=\"N\" alt=\"N\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/3b4\/bd3\/d14\/3b4bd3d145674d7557014d1df4151dd7.svg\" width=\"18\" height=\"18\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/3b4\/bd3\/d14\/3b4bd3d145674d7557014d1df4151dd7.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/3b4\/bd3\/d14\/3b4bd3d145674d7557014d1df4151dd7.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0442\u0430\u043a\u0438\u043c \u0436\u0435 \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043a\u0430\u043a \u0432 \u0442\u0435\u0441\u0442\u0435 \u00ab\u0412\u0441\u0442\u0430\u0432\u043a\u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0439 \u043f\u043e\u0440\u044f\u0434\u043a\u0435\u00bb. \u0417\u0430\u0442\u0435\u043c \u043c\u044b \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c \u043a\u0430\u0436\u0434\u0443\u044e \u043f\u0430\u0440\u0443 \u043a\u043b\u044e\u0447-\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435, \u043e\u0442\u043b\u0438\u0447\u043d\u043e\u043c \u043e\u0442 \u0442\u043e\u0433\u043e, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u043d\u0438 \u0431\u044b\u043b\u0438 \u0432\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/6bc\/098\/9df\/6bc0989dfaceb6f013b49e59332b622e.png\" alt=\"\" title=\"\" width=\"750\" height=\"500\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/6bc\/098\/9df\/6bc0989dfaceb6f013b49e59332b622e.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/6bc\/098\/9df\/6bc0989dfaceb6f013b49e59332b622e.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<h4>\u041f\u043e\u0438\u0441\u043a \u043f\u0430\u0440 \u0441 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c<\/h4>\n<p>\u041f\u0435\u0440\u0435\u0434 \u043a\u0430\u0436\u0434\u044b\u043c \u0437\u0430\u043c\u0435\u0440\u043e\u043c \u043c\u044b \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c <img decoding=\"async\" class=\"formula inline\" source=\"N\" alt=\"N\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/9db\/66f\/a72\/9db66fa72843e3c2d984e34325bef94f.svg\" width=\"18\" height=\"18\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/9db\/66f\/a72\/9db66fa72843e3c2d984e34325bef94f.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/9db\/66f\/a72\/9db66fa72843e3c2d984e34325bef94f.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0442\u0430\u043a\u0438\u043c \u0436\u0435 \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043a\u0430\u043a \u0432 \u0442\u0435\u0441\u0442\u0435 \u00ab\u0412\u0441\u0442\u0430\u0432\u043a\u0438 \u043f\u0430\u0440 \u0441 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c\u00bb. \u0417\u0430\u0442\u0435\u043c \u043c\u044b \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c \u043a\u0430\u0436\u0434\u0443\u044e \u043f\u0430\u0440\u0443 \u043a\u043b\u044e\u0447-\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435, \u043e\u0442\u043b\u0438\u0447\u043d\u043e\u043c \u043e\u0442 \u0442\u043e\u0433\u043e, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u043d\u0438 \u0431\u044b\u043b\u0438 \u0432\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d91\/f6f\/d83\/d91f6fd834763201754d744104e77c17.png\" alt=\"\" title=\"\" width=\"750\" height=\"500\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/d91\/f6f\/d83\/d91f6fd834763201754d744104e77c17.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d91\/f6f\/d83\/d91f6fd834763201754d744104e77c17.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<h4>\u041f\u043e\u0438\u0441\u043a \u043d\u0435\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043f\u0430\u0440<\/h4>\n<p>\u041f\u0435\u0440\u0435\u0434 \u043a\u0430\u0436\u0434\u044b\u043c \u0437\u0430\u043c\u0435\u0440\u043e\u043c \u043c\u044b \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c <img decoding=\"async\" class=\"formula inline\" source=\"N\" alt=\"N\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/9d7\/d3a\/4ab\/9d7d3a4ab20877c44beb355a1505597a.svg\" width=\"18\" height=\"18\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/9d7\/d3a\/4ab\/9d7d3a4ab20877c44beb355a1505597a.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/9d7\/d3a\/4ab\/9d7d3a4ab20877c44beb355a1505597a.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0442\u0430\u043a\u0438\u043c \u0436\u0435 \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043a\u0430\u043a \u0432 \u0442\u0435\u0441\u0442\u0435 \u00ab\u0412\u0441\u0442\u0430\u0432\u043a\u0438 \u043f\u0430\u0440 \u0441 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c\u00bb. \u0417\u0430\u0442\u0435\u043c \u043c\u044b \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c \u0434\u0440\u0443\u0433\u043e\u0439 \u0432\u0435\u043a\u0442\u043e\u0440 <img decoding=\"async\" class=\"formula inline\" source=\"N\" alt=\"N\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/18b\/0a5\/b48\/18b0a5b482092462e62855e73c86568b.svg\" width=\"18\" height=\"18\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/18b\/0a5\/b48\/18b0a5b482092462e62855e73c86568b.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/18b\/0a5\/b48\/18b0a5b482092462e62855e73c86568b.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0449\u0438\u0439\u0441\u044f \u043e\u0442 \u0432\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u0438 \u043f\u044b\u0442\u0430\u0435\u043c\u0441\u044f \u043d\u0430\u0439\u0442\u0438 \u044d\u0442\u0438 \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/69d\/33d\/af7\/69d33daf728021245ea28a83a3f570d6.png\" alt=\"\" title=\"\" width=\"750\" height=\"500\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/69d\/33d\/af7\/69d33daf728021245ea28a83a3f570d6.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/69d\/33d\/af7\/69d33daf728021245ea28a83a3f570d6.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<h4>\u041f\u043e\u0438\u0441\u043a \u043f\u043e\u0441\u043b\u0435 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u044b<\/h4>\n<p>\u041f\u0435\u0440\u0435\u0434 \u043a\u0430\u0436\u0434\u044b\u043c \u0437\u0430\u043c\u0435\u0440\u043e\u043c \u043c\u044b \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c <img decoding=\"async\" class=\"formula inline\" source=\"N\" alt=\"N\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a75\/9b7\/1d7\/a759b71d72264fd62c375644b5197577.svg\" width=\"18\" height=\"18\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a75\/9b7\/1d7\/a759b71d72264fd62c375644b5197577.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a75\/9b7\/1d7\/a759b71d72264fd62c375644b5197577.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0442\u0430\u043a\u0438\u043c \u0436\u0435 \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043a\u0430\u043a \u0432 \u0442\u0435\u0441\u0442\u0435 \u00ab\u0412\u0441\u0442\u0430\u0432\u043a\u0438 \u043f\u0430\u0440 \u0441 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c\u00bb, \u0430 \u0437\u0430\u0442\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0443\u0434\u0430\u043b\u044f\u0435\u043c \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0443 \u044d\u0442\u0438\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439. \u0417\u0430\u0442\u0435\u043c \u043c\u044b \u043f\u044b\u0442\u0430\u0435\u043c\u0441\u044f \u043d\u0430\u0439\u0442\u0438 \u0432\u0441\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u0434\u0440\u0443\u0433\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435, \u0447\u0442\u043e \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a 50% \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0439 \u0438 50% \u043f\u0440\u043e\u043c\u0430\u0445\u043e\u0432.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/c8f\/016\/63a\/c8f01663a02ddde1b9c112e71111c7bc.png\" alt=\"\" title=\"\" width=\"750\" height=\"500\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/c8f\/016\/63a\/c8f01663a02ddde1b9c112e71111c7bc.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/c8f\/016\/63a\/c8f01663a02ddde1b9c112e71111c7bc.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<h4>\u0418\u0442\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435<\/h4>\n<p>\u041f\u0435\u0440\u0435\u0434 \u043a\u0430\u0436\u0434\u044b\u043c \u0437\u0430\u043c\u0435\u0440\u043e\u043c \u043c\u044b \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c <img decoding=\"async\" class=\"formula inline\" source=\"N\" alt=\"N\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/585\/6fe\/ebe\/5856feebe3eb301a9daaa29588dd04c5.svg\" width=\"18\" height=\"18\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/585\/6fe\/ebe\/5856feebe3eb301a9daaa29588dd04c5.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/585\/6fe\/ebe\/5856feebe3eb301a9daaa29588dd04c5.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0442\u0430\u043a\u0438\u043c \u0436\u0435 \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043a\u0430\u043a \u0432 \u0442\u0435\u0441\u0442\u0435 \u00ab\u0412\u0441\u0442\u0430\u0432\u043a\u0438 \u043f\u0430\u0440 \u0441 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c\u00bb. \u0417\u0430\u0442\u0435\u043c \u043c\u044b \u0438\u0442\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u0441\u044f \u043f\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0443, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u044f \u0432\u0441\u0435 \u043f\u0430\u0440\u044b \u043a\u043b\u044e\u0447-\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/7ce\/0f7\/763\/7ce0f7763062bd1c9db60a68c5ccc19e.png\" alt=\"\" title=\"\" width=\"750\" height=\"500\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/7ce\/0f7\/763\/7ce0f7763062bd1c9db60a68c5ccc19e.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/7ce\/0f7\/763\/7ce0f7763062bd1c9db60a68c5ccc19e.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<\/div>\n<\/details>\n<details class=\"spoiler\">\n<summary>string (15 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432) \u2014 int64_t<\/summary>\n<div class=\"spoiler__content\">\n<h4>\u0412\u0441\u0442\u0430\u0432\u043a\u0438 \u043f\u0430\u0440 \u0441 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c<\/h4>\n<p>\u041c\u044b <img decoding=\"async\" class=\"formula inline\" source=\"N\" alt=\"N\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f4f\/368\/d49\/f4f368d49ce89218257f34f14781e96d.svg\" width=\"18\" height=\"18\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f4f\/368\/d49\/f4f368d49ce89218257f34f14781e96d.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f4f\/368\/d49\/f4f368d49ce89218257f34f14781e96d.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0440\u0430\u0437 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c \u0441\u0442\u0440\u043e\u043a\u0443-\u043a\u043b\u044e\u0447 \u0438 \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0435\u0435 \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0441 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c <code>std::int64_t{1}<\/code>.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/dbd\/9c4\/2cd\/dbd9c42cd8ee558d2f06dec36ae1156a.png\" alt=\"\" title=\"\" width=\"750\" height=\"500\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/dbd\/9c4\/2cd\/dbd9c42cd8ee558d2f06dec36ae1156a.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/dbd\/9c4\/2cd\/dbd9c42cd8ee558d2f06dec36ae1156a.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0413\u0440\u0430\u0444\u0438\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d \u043d\u0438\u0436\u0435.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d3a\/346\/fc5\/d3a346fc5b3f74152b33435f699a07db.png\" alt=\"\" title=\"\" width=\"750\" height=\"500\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/d3a\/346\/fc5\/d3a346fc5b3f74152b33435f699a07db.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d3a\/346\/fc5\/d3a346fc5b3f74152b33435f699a07db.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<h4>\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043f\u0430\u0440 \u0441 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c<\/h4>\n<p>\u041f\u0435\u0440\u0435\u0434 \u043a\u0430\u0436\u0434\u044b\u043c \u0437\u0430\u043c\u0435\u0440\u043e\u043c \u043c\u044b \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c <img decoding=\"async\" class=\"formula inline\" source=\"N\" alt=\"N\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1d8\/b6c\/28c\/1d8b6c28c81d8abb570d027757485a3a.svg\" width=\"18\" height=\"18\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1d8\/b6c\/28c\/1d8b6c28c81d8abb570d027757485a3a.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1d8\/b6c\/28c\/1d8b6c28c81d8abb570d027757485a3a.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440, \u043a\u0430\u043a \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u0442\u0435\u0441\u0442\u0435 \u00ab\u0412\u0441\u0442\u0430\u0432\u043a\u0438 \u043f\u0430\u0440 \u0441 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c\u00bb. \u0417\u0430\u0442\u0435\u043c \u043c\u044b \u0443\u0434\u0430\u043b\u044f\u0435\u043c \u043a\u0430\u0436\u0434\u044b\u0439 \u043a\u043b\u044e\u0447 \u043e\u0434\u0438\u043d \u0437\u0430 \u0434\u0440\u0443\u0433\u0438\u043c \u0432 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435, \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u043c \u043e\u0442 \u0442\u043e\u0433\u043e, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u043d\u0438 \u0431\u044b\u043b\u0438 \u0432\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/a6b\/219\/be1\/a6b219be126d814eaf8942c74d7f507e.png\" alt=\"\" title=\"\" width=\"750\" height=\"500\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/a6b\/219\/be1\/a6b219be126d814eaf8942c74d7f507e.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/a6b\/219\/be1\/a6b219be126d814eaf8942c74d7f507e.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<h4>\u041f\u043e\u0438\u0441\u043a \u043f\u0430\u0440 \u0441 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c<\/h4>\n<p>\u041f\u0435\u0440\u0435\u0434 \u043a\u0430\u0436\u0434\u044b\u043c \u0437\u0430\u043c\u0435\u0440\u043e\u043c \u043c\u044b \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c <img decoding=\"async\" class=\"formula inline\" source=\"N\" alt=\"N\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/49b\/ef8\/edc\/49bef8edc37e85df4b736565aa7b891e.svg\" width=\"18\" height=\"18\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/49b\/ef8\/edc\/49bef8edc37e85df4b736565aa7b891e.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/49b\/ef8\/edc\/49bef8edc37e85df4b736565aa7b891e.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440, \u043a\u0430\u043a \u0432 \u0442\u0435\u0441\u0442\u0435 \u00ab\u0412\u0441\u0442\u0430\u0432\u043a\u0438 \u043f\u0430\u0440 \u0441 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c\u00bb. \u0417\u0430\u0442\u0435\u043c \u043c\u044b \u0438\u0449\u0435\u043c \u043a\u0430\u0436\u0434\u044b\u0439 \u043a\u043b\u044e\u0447 \u043e\u0434\u0438\u043d \u0437\u0430 \u0434\u0440\u0443\u0433\u0438\u043c \u0432 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435, \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u043c \u043e\u0442 \u0442\u043e\u0433\u043e, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u043d\u0438 \u0431\u044b\u043b\u0438 \u0432\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/6cf\/5c9\/8b2\/6cf5c98b2e9ff318a4a57103124f5b70.png\" alt=\"\" title=\"\" width=\"750\" height=\"500\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/6cf\/5c9\/8b2\/6cf5c98b2e9ff318a4a57103124f5b70.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/6cf\/5c9\/8b2\/6cf5c98b2e9ff318a4a57103124f5b70.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0413\u0440\u0430\u0444\u0438\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d \u043d\u0438\u0436\u0435.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/695\/e9b\/e7d\/695e9be7dc233201e89bdc93cbce419d.png\" alt=\"\" title=\"\" width=\"750\" height=\"500\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/695\/e9b\/e7d\/695e9be7dc233201e89bdc93cbce419d.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/695\/e9b\/e7d\/695e9be7dc233201e89bdc93cbce419d.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<h4>\u041f\u043e\u0438\u0441\u043a \u043d\u0435\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043f\u0430\u0440<\/h4>\n<p>\u041f\u0435\u0440\u0435\u0434 \u043a\u0430\u0436\u0434\u044b\u043c \u0437\u0430\u043c\u0435\u0440\u043e\u043c \u043c\u044b \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c <img decoding=\"async\" class=\"formula inline\" source=\"N\" alt=\"N\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/739\/f96\/180\/739f96180c3497c473b13cbd73b20860.svg\" width=\"18\" height=\"18\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/739\/f96\/180\/739f96180c3497c473b13cbd73b20860.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/739\/f96\/180\/739f96180c3497c473b13cbd73b20860.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0442\u0430\u043a\u0438\u043c \u0436\u0435 \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043a\u0430\u043a \u0432 \u0442\u0435\u0441\u0442\u0435 \u00ab\u0412\u0441\u0442\u0430\u0432\u043a\u0438 \u043f\u0430\u0440 \u0441 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c\u00bb. \u0417\u0430\u0442\u0435\u043c \u043c\u044b \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c \u0434\u0440\u0443\u0433\u043e\u0439 \u0432\u0435\u043a\u0442\u043e\u0440 <img decoding=\"async\" class=\"formula inline\" source=\"N\" alt=\"N\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2dc\/4b0\/17d\/2dc4b017d158780de0d8de13da212adf.svg\" width=\"18\" height=\"18\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2dc\/4b0\/17d\/2dc4b017d158780de0d8de13da212adf.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2dc\/4b0\/17d\/2dc4b017d158780de0d8de13da212adf.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0441\u0442\u0440\u043e\u043a, \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0449\u0438\u0439\u0441\u044f \u043e\u0442 \u0432\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u0438 \u043f\u044b\u0442\u0430\u0435\u043c\u0441\u044f \u043d\u0430\u0439\u0442\u0438 \u044d\u0442\u0438 \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/b3d\/a31\/30e\/b3da3130e058ef6a36122bbf2f020c00.png\" alt=\"\" title=\"\" width=\"750\" height=\"500\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/b3d\/a31\/30e\/b3da3130e058ef6a36122bbf2f020c00.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/b3d\/a31\/30e\/b3da3130e058ef6a36122bbf2f020c00.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<h4>\u041f\u043e\u0438\u0441\u043a \u043f\u043e\u0441\u043b\u0435 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u044b<\/h4>\n<p>\u041f\u0435\u0440\u0435\u0434 \u043a\u0430\u0436\u0434\u044b\u043c \u0437\u0430\u043c\u0435\u0440\u043e\u043c \u043c\u044b \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c <img decoding=\"async\" class=\"formula inline\" source=\"N\" alt=\"N\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/35a\/6cd\/5a6\/35a6cd5a6be3cae9ec48f27364f6ac21.svg\" width=\"18\" height=\"18\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/35a\/6cd\/5a6\/35a6cd5a6be3cae9ec48f27364f6ac21.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/35a\/6cd\/5a6\/35a6cd5a6be3cae9ec48f27364f6ac21.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0442\u0430\u043a\u0438\u043c \u0436\u0435 \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043a\u0430\u043a \u0432 \u0442\u0435\u0441\u0442\u0435 \u00ab\u0412\u0441\u0442\u0430\u0432\u043a\u0438 \u043f\u0430\u0440 \u0441 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c\u00bb, \u0430 \u0437\u0430\u0442\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0443\u0434\u0430\u043b\u044f\u0435\u043c \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0443 \u044d\u0442\u0438\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439. \u0417\u0430\u0442\u0435\u043c \u043c\u044b \u043f\u044b\u0442\u0430\u0435\u043c\u0441\u044f \u043d\u0430\u0439\u0442\u0438 \u0432\u0441\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u0434\u0440\u0443\u0433\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435, \u0447\u0442\u043e \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a 50% \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0439 \u0438 50% \u043f\u0440\u043e\u043c\u0430\u0445\u043e\u0432.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/514\/b7c\/f08\/514b7cf08fe5caa2c6511a3c7b6af944.png\" alt=\"\" title=\"\" width=\"750\" height=\"500\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/514\/b7c\/f08\/514b7cf08fe5caa2c6511a3c7b6af944.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/514\/b7c\/f08\/514b7cf08fe5caa2c6511a3c7b6af944.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<\/div>\n<\/details>\n<details class=\"spoiler\">\n<summary>string (50 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432) \u2014 int64_t<\/summary>\n<div class=\"spoiler__content\">\n<h4>\u0412\u0441\u0442\u0430\u0432\u043a\u0438 \u043f\u0430\u0440 \u0441 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c<\/h4>\n<p>\u041c\u044b<img decoding=\"async\" class=\"formula inline\" source=\"N\" alt=\"N\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5db\/994\/75a\/5db99475a1800553be20ed06c6c320fd.svg\" width=\"18\" height=\"18\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5db\/994\/75a\/5db99475a1800553be20ed06c6c320fd.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5db\/994\/75a\/5db99475a1800553be20ed06c6c320fd.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0440\u0430\u0437 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c \u0441\u0442\u0440\u043e\u043a\u0443-\u043a\u043b\u044e\u0447 \u0438 \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0435\u0435 \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0441 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c <code>std::int64_t{1}<\/code>.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/885\/f8e\/d42\/885f8ed42ffcac6e4f66f71b77f35245.png\" alt=\"\" title=\"\" width=\"750\" height=\"500\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/885\/f8e\/d42\/885f8ed42ffcac6e4f66f71b77f35245.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/885\/f8e\/d42\/885f8ed42ffcac6e4f66f71b77f35245.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0413\u0440\u0430\u0444\u0438\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d \u043d\u0438\u0436\u0435.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/40e\/885\/7c2\/40e8857c285d215e40d88b607b85c9fb.png\" alt=\"\" title=\"\" width=\"750\" height=\"500\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/40e\/885\/7c2\/40e8857c285d215e40d88b607b85c9fb.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/40e\/885\/7c2\/40e8857c285d215e40d88b607b85c9fb.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<h4>\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043f\u0430\u0440 \u0441 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c<\/h4>\n<p>\u041f\u0435\u0440\u0435\u0434 \u043a\u0430\u0436\u0434\u044b\u043c \u0437\u0430\u043c\u0435\u0440\u043e\u043c \u043c\u044b \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c <img decoding=\"async\" class=\"formula inline\" source=\"N\" alt=\"N\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/7de\/a4e\/b8d\/7dea4eb8db9ed595b1cd73c33791c96d.svg\" width=\"18\" height=\"18\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/7de\/a4e\/b8d\/7dea4eb8db9ed595b1cd73c33791c96d.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/7de\/a4e\/b8d\/7dea4eb8db9ed595b1cd73c33791c96d.svg 781w\" loading=\"lazy\" decode=\"async\"\/>\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440, \u043a\u0430\u043a \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u0442\u0435\u0441\u0442\u0435 \u00ab\u0412\u0441\u0442\u0430\u0432\u043a\u0438 \u043f\u0430\u0440 \u0441 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c\u00bb. \u0417\u0430\u0442\u0435\u043c \u043c\u044b \u0443\u0434\u0430\u043b\u044f\u0435\u043c \u043a\u0430\u0436\u0434\u044b\u0439 \u043a\u043b\u044e\u0447 \u043e\u0434\u0438\u043d \u0437\u0430 \u0434\u0440\u0443\u0433\u0438\u043c \u0432 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435, \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u043c \u043e\u0442 \u0442\u043e\u0433\u043e, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u043d\u0438 \u0431\u044b\u043b\u0438 \u0432\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e41\/41b\/f07\/e4141bf071099995b8768a17db94f575.png\" alt=\"\" title=\"\" width=\"750\" height=\"500\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/e41\/41b\/f07\/e4141bf071099995b8768a17db94f575.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e41\/41b\/f07\/e4141bf071099995b8768a17db94f575.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<h4>\u041f\u043e\u0438\u0441\u043a \u043f\u0430\u0440 \u0441 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c<\/h4>\n<p>\u041f\u0435\u0440\u0435\u0434 \u043a\u0430\u0436\u0434\u044b\u043c \u0437\u0430\u043c\u0435\u0440\u043e\u043c \u043c\u044b \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c <img decoding=\"async\" class=\"formula inline\" source=\"N\" alt=\"N\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/8fe\/816\/277\/8fe8162772c606d43535a746aeee75fd.svg\" width=\"18\" height=\"18\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/8fe\/816\/277\/8fe8162772c606d43535a746aeee75fd.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/8fe\/816\/277\/8fe8162772c606d43535a746aeee75fd.svg 781w\" loading=\"lazy\" decode=\"async\"\/>\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440, \u043a\u0430\u043a \u0432 \u0442\u0435\u0441\u0442\u0435 \u00ab\u0412\u0441\u0442\u0430\u0432\u043a\u0438 \u043f\u0430\u0440 \u0441 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c\u00bb. \u0417\u0430\u0442\u0435\u043c \u043c\u044b \u0438\u0449\u0435\u043c \u043a\u0430\u0436\u0434\u044b\u0439 \u043a\u043b\u044e\u0447 \u043e\u0434\u0438\u043d \u0437\u0430 \u0434\u0440\u0443\u0433\u0438\u043c \u0432 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435, \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u043c \u043e\u0442 \u0442\u043e\u0433\u043e, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u043d\u0438 \u0431\u044b\u043b\u0438 \u0432\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e20\/9e9\/8ef\/e209e98ef05dba0a81e378b076fb4189.png\" alt=\"\" title=\"\" width=\"750\" height=\"500\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/e20\/9e9\/8ef\/e209e98ef05dba0a81e378b076fb4189.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e20\/9e9\/8ef\/e209e98ef05dba0a81e378b076fb4189.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<h4>\u041f\u043e\u0438\u0441\u043a \u043d\u0435\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043f\u0430\u0440<\/h4>\n<p>\u041f\u0435\u0440\u0435\u0434 \u043a\u0430\u0436\u0434\u044b\u043c \u0437\u0430\u043c\u0435\u0440\u043e\u043c \u043c\u044b \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c  \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0442\u0430\u043a\u0438\u043c \u0436\u0435 \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043a\u0430\u043a \u0432 \u0442\u0435\u0441\u0442\u0435 \u00ab\u0412\u0441\u0442\u0430\u0432\u043a\u0438 \u043f\u0430\u0440 \u0441 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c\u00bb. \u0417\u0430\u0442\u0435\u043c \u043c\u044b \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c \u0434\u0440\u0443\u0433\u043e\u0439 \u0432\u0435\u043a\u0442\u043e\u0440  \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0441\u0442\u0440\u043e\u043a, \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0449\u0438\u0439\u0441\u044f \u043e\u0442 \u0432\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u0438 \u043f\u044b\u0442\u0430\u0435\u043c\u0441\u044f \u043d\u0430\u0439\u0442\u0438 \u044d\u0442\u0438 \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/b22\/607\/950\/b2260795082b1e12e3066a05a853de1c.png\" alt=\"\" title=\"\" width=\"750\" height=\"500\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/b22\/607\/950\/b2260795082b1e12e3066a05a853de1c.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/b22\/607\/950\/b2260795082b1e12e3066a05a853de1c.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<h4>\u041f\u043e\u0438\u0441\u043a \u043f\u043e\u0441\u043b\u0435 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u044b<\/h4>\n<p>\u041f\u0435\u0440\u0435\u0434 \u043a\u0430\u0436\u0434\u044b\u043c \u0437\u0430\u043c\u0435\u0440\u043e\u043c \u043c\u044b \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c  \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0442\u0430\u043a\u0438\u043c \u0436\u0435 \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043a\u0430\u043a \u0432 \u0442\u0435\u0441\u0442\u0435 \u00ab\u0412\u0441\u0442\u0430\u0432\u043a\u0438 \u043f\u0430\u0440 \u0441 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c\u00bb, \u0430 \u0437\u0430\u0442\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0443\u0434\u0430\u043b\u044f\u0435\u043c \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0443 \u044d\u0442\u0438\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439. \u0417\u0430\u0442\u0435\u043c \u043c\u044b \u043f\u044b\u0442\u0430\u0435\u043c\u0441\u044f \u043d\u0430\u0439\u0442\u0438 \u0432\u0441\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u0434\u0440\u0443\u0433\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435, \u0447\u0442\u043e \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a 50% \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0439 \u0438 50% \u043f\u0440\u043e\u043c\u0430\u0445\u043e\u0432.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/452\/64c\/419\/45264c419d820590bd16f1f4d5d56b6a.png\" alt=\"\" title=\"\" width=\"750\" height=\"500\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/452\/64c\/419\/45264c419d820590bd16f1f4d5d56b6a.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/452\/64c\/419\/45264c419d820590bd16f1f4d5d56b6a.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<\/div>\n<\/details>\n<\/div>\n<\/details>\n<details class=\"spoiler\">\n<summary>\u0414\u0438\u0430\u043f\u0430\u0437\u043e\u043d 200&#8217;000\u20133&#8217;000&#8217;000 (\u0448\u0430\u0433 200&#8217;000)<\/summary>\n<div class=\"spoiler__content\">\n<p>\u0412\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u043e\u0442\u043d\u0438 \u0442\u044b\u0441\u044f\u0447 \u0438 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u044b \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u043f\u043b\u043e\u0441\u043a\u0438\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0442\u0443\u0442 \u044f \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u043b \u0442\u043e\u043b\u044c\u043a\u043e \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0438 \u043f\u043e\u0438\u0441\u043a\u0430 \u0438 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438.<\/p>\n<details class=\"spoiler\">\n<summary>int64_t \u2014 int64_t<\/summary>\n<div class=\"spoiler__content\">\n<h4>\u041f\u043e\u0438\u0441\u043a \u043f\u0430\u0440<\/h4>\n<p>\u041f\u0435\u0440\u0435\u0434 \u043a\u0430\u0436\u0434\u044b\u043c \u0437\u0430\u043c\u0435\u0440\u043e\u043c \u043c\u044b \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c <img decoding=\"async\" class=\"formula inline\" source=\"N\" alt=\"N\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/0f4\/299\/1ac\/0f42991ac1219067b8fad152b3e3b59c.svg\" width=\"18\" height=\"18\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/0f4\/299\/1ac\/0f42991ac1219067b8fad152b3e3b59c.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/0f4\/299\/1ac\/0f42991ac1219067b8fad152b3e3b59c.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0442\u0430\u043a\u0438\u043c \u0436\u0435 \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043a\u0430\u043a \u0432 \u0442\u0435\u0441\u0442\u0435 \u00ab\u0412\u0441\u0442\u0430\u0432\u043a\u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0439 \u043f\u043e\u0440\u044f\u0434\u043a\u0435\u00bb. \u0417\u0430\u0442\u0435\u043c \u043c\u044b \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c \u043a\u0430\u0436\u0434\u0443\u044e \u043f\u0430\u0440\u0443 \u043a\u043b\u044e\u0447-\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435, \u043e\u0442\u043b\u0438\u0447\u043d\u043e\u043c \u043e\u0442 \u0442\u043e\u0433\u043e, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u043d\u0438 \u0431\u044b\u043b\u0438 \u0432\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/93e\/f8b\/f98\/93ef8bf9867e68df8da6faffa87cbc86.png\" alt=\"\" title=\"\" width=\"750\" height=\"500\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/93e\/f8b\/f98\/93ef8bf9867e68df8da6faffa87cbc86.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/93e\/f8b\/f98\/93ef8bf9867e68df8da6faffa87cbc86.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<h4>\u041f\u043e\u0438\u0441\u043a \u043f\u0430\u0440 \u0441 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c<\/h4>\n<p>\u041f\u0435\u0440\u0435\u0434 \u043a\u0430\u0436\u0434\u044b\u043c \u0437\u0430\u043c\u0435\u0440\u043e\u043c \u043c\u044b \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c <img decoding=\"async\" class=\"formula inline\" source=\"N\" alt=\"N\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/337\/83e\/b06\/33783eb0683bcbb9ddae08fa48f21b23.svg\" width=\"18\" height=\"18\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/337\/83e\/b06\/33783eb0683bcbb9ddae08fa48f21b23.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/337\/83e\/b06\/33783eb0683bcbb9ddae08fa48f21b23.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0442\u0430\u043a\u0438\u043c \u0436\u0435 \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043a\u0430\u043a \u0432 \u0442\u0435\u0441\u0442\u0435 \u00ab\u0412\u0441\u0442\u0430\u0432\u043a\u0438 \u043f\u0430\u0440 \u0441 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c\u00bb. \u0417\u0430\u0442\u0435\u043c \u043c\u044b \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c \u043a\u0430\u0436\u0434\u0443\u044e \u043f\u0430\u0440\u0443 \u043a\u043b\u044e\u0447-\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435, \u043e\u0442\u043b\u0438\u0447\u043d\u043e\u043c \u043e\u0442 \u0442\u043e\u0433\u043e, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u043d\u0438 \u0431\u044b\u043b\u0438 \u0432\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/ccd\/57d\/0ce\/ccd57d0cec5724abbb0a8cb7dea18d88.png\" alt=\"\" title=\"\" width=\"750\" height=\"500\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/ccd\/57d\/0ce\/ccd57d0cec5724abbb0a8cb7dea18d88.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/ccd\/57d\/0ce\/ccd57d0cec5724abbb0a8cb7dea18d88.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<h4>\u041f\u043e\u0438\u0441\u043a \u043d\u0435\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043f\u0430\u0440<\/h4>\n<p>\u041f\u0435\u0440\u0435\u0434 \u043a\u0430\u0436\u0434\u044b\u043c \u0437\u0430\u043c\u0435\u0440\u043e\u043c \u043c\u044b \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c <img decoding=\"async\" class=\"formula inline\" source=\"N\" alt=\"N\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/718\/e87\/1f5\/718e871f5912ab5e0b852f85445d5e90.svg\" width=\"18\" height=\"18\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/718\/e87\/1f5\/718e871f5912ab5e0b852f85445d5e90.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/718\/e87\/1f5\/718e871f5912ab5e0b852f85445d5e90.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0442\u0430\u043a\u0438\u043c \u0436\u0435 \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043a\u0430\u043a \u0432 \u0442\u0435\u0441\u0442\u0435 \u00ab\u0412\u0441\u0442\u0430\u0432\u043a\u0438 \u043f\u0430\u0440 \u0441 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c\u00bb. \u0417\u0430\u0442\u0435\u043c \u043c\u044b \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c \u0434\u0440\u0443\u0433\u043e\u0439 \u0432\u0435\u043a\u0442\u043e\u0440 <img decoding=\"async\" class=\"formula inline\" source=\"N\" alt=\"N\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/53d\/c1c\/088\/53dc1c088a8508e9f7173f515980e0e7.svg\" width=\"18\" height=\"18\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/53d\/c1c\/088\/53dc1c088a8508e9f7173f515980e0e7.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/53d\/c1c\/088\/53dc1c088a8508e9f7173f515980e0e7.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0449\u0438\u0439\u0441\u044f \u043e\u0442 \u0432\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u0438 \u043f\u044b\u0442\u0430\u0435\u043c\u0441\u044f \u043d\u0430\u0439\u0442\u0438 \u044d\u0442\u0438 \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/388\/01d\/9de\/38801d9deb8ef32605b8eff48e2e4095.png\" alt=\"\" title=\"\" width=\"750\" height=\"500\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/388\/01d\/9de\/38801d9deb8ef32605b8eff48e2e4095.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/388\/01d\/9de\/38801d9deb8ef32605b8eff48e2e4095.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<h4>\u0418\u0442\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435<\/h4>\n<p>\u041f\u0435\u0440\u0435\u0434 \u043a\u0430\u0436\u0434\u044b\u043c \u0437\u0430\u043c\u0435\u0440\u043e\u043c \u043c\u044b \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c <img decoding=\"async\" class=\"formula inline\" source=\"N\" alt=\"N\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f1e\/b3e\/055\/f1eb3e05533e37e338249cd9458dd862.svg\" width=\"18\" height=\"18\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f1e\/b3e\/055\/f1eb3e05533e37e338249cd9458dd862.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f1e\/b3e\/055\/f1eb3e05533e37e338249cd9458dd862.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0442\u0430\u043a\u0438\u043c \u0436\u0435 \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043a\u0430\u043a \u0432 \u0442\u0435\u0441\u0442\u0435 \u00ab\u0412\u0441\u0442\u0430\u0432\u043a\u0438 \u043f\u0430\u0440 \u0441 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c\u00bb. \u0417\u0430\u0442\u0435\u043c \u043c\u044b \u0438\u0442\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u0441\u044f \u043f\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0443, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u044f \u0432\u0441\u0435 \u043f\u0430\u0440\u044b \u043a\u043b\u044e\u0447-\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e0b\/144\/7ae\/e0b1447ae2b43c76a08e43f2ef0dccdb.png\" alt=\"\" title=\"\" width=\"750\" height=\"500\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/e0b\/144\/7ae\/e0b1447ae2b43c76a08e43f2ef0dccdb.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e0b\/144\/7ae\/e0b1447ae2b43c76a08e43f2ef0dccdb.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<\/div>\n<\/details>\n<details class=\"spoiler\">\n<summary>string (15 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432) \u2014 int64_t<\/summary>\n<div class=\"spoiler__content\">\n<h4>\u041f\u043e\u0438\u0441\u043a \u043f\u0430\u0440 \u0441 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c<\/h4>\n<p>\u041f\u0435\u0440\u0435\u0434 \u043a\u0430\u0436\u0434\u044b\u043c \u0437\u0430\u043c\u0435\u0440\u043e\u043c \u043c\u044b \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c <img decoding=\"async\" class=\"formula inline\" source=\"N\" alt=\"N\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/301\/848\/597\/30184859748a14afc651fc94101cc2a4.svg\" width=\"18\" height=\"18\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/301\/848\/597\/30184859748a14afc651fc94101cc2a4.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/301\/848\/597\/30184859748a14afc651fc94101cc2a4.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440, \u043a\u0430\u043a \u0432 \u0442\u0435\u0441\u0442\u0435 \u00ab\u0412\u0441\u0442\u0430\u0432\u043a\u0438 \u043f\u0430\u0440 \u0441 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c\u00bb. \u0417\u0430\u0442\u0435\u043c \u043c\u044b \u0438\u0449\u0435\u043c \u043a\u0430\u0436\u0434\u044b\u0439 \u043a\u043b\u044e\u0447 \u043e\u0434\u0438\u043d \u0437\u0430 \u0434\u0440\u0443\u0433\u0438\u043c \u0432 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435, \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u043c \u043e\u0442 \u0442\u043e\u0433\u043e, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u043d\u0438 \u0431\u044b\u043b\u0438 \u0432\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/7ed\/775\/b78\/7ed775b78c70705b3be92dedc66e8025.png\" alt=\"\" title=\"\" width=\"750\" height=\"500\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/7ed\/775\/b78\/7ed775b78c70705b3be92dedc66e8025.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/7ed\/775\/b78\/7ed775b78c70705b3be92dedc66e8025.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<h4>\u041f\u043e\u0438\u0441\u043a \u043d\u0435\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043f\u0430\u0440<\/h4>\n<p>\u041f\u0435\u0440\u0435\u0434 \u043a\u0430\u0436\u0434\u044b\u043c \u0437\u0430\u043c\u0435\u0440\u043e\u043c \u043c\u044b \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c <img decoding=\"async\" class=\"formula inline\" source=\"N\" alt=\"N\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/78d\/a13\/4aa\/78da134aa6def0ad00a28c5eef620e86.svg\" width=\"18\" height=\"18\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/78d\/a13\/4aa\/78da134aa6def0ad00a28c5eef620e86.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/78d\/a13\/4aa\/78da134aa6def0ad00a28c5eef620e86.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0442\u0430\u043a\u0438\u043c \u0436\u0435 \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043a\u0430\u043a \u0432 \u0442\u0435\u0441\u0442\u0435 \u00ab\u0412\u0441\u0442\u0430\u0432\u043a\u0438 \u043f\u0430\u0440 \u0441 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c\u00bb. \u0417\u0430\u0442\u0435\u043c \u043c\u044b \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c \u0434\u0440\u0443\u0433\u043e\u0439 \u0432\u0435\u043a\u0442\u043e\u0440 <img decoding=\"async\" class=\"formula inline\" source=\"N\" alt=\"N\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b60\/bcb\/0e1\/b60bcb0e1574c946e05befa0800450a2.svg\" width=\"18\" height=\"18\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b60\/bcb\/0e1\/b60bcb0e1574c946e05befa0800450a2.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b60\/bcb\/0e1\/b60bcb0e1574c946e05befa0800450a2.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0441\u0442\u0440\u043e\u043a, \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0449\u0438\u0439\u0441\u044f \u043e\u0442 \u0432\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u0438 \u043f\u044b\u0442\u0430\u0435\u043c\u0441\u044f \u043d\u0430\u0439\u0442\u0438 \u044d\u0442\u0438 \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/662\/93d\/a77\/66293da77ef1f4c40b1a5b95af8080fb.png\" alt=\"\" title=\"\" width=\"750\" height=\"500\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/662\/93d\/a77\/66293da77ef1f4c40b1a5b95af8080fb.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/662\/93d\/a77\/66293da77ef1f4c40b1a5b95af8080fb.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<\/div>\n<\/details>\n<details class=\"spoiler\">\n<summary>string (50 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432) \u2014 int64_t<\/summary>\n<div class=\"spoiler__content\">\n<h4>\u041f\u043e\u0438\u0441\u043a \u043f\u0430\u0440 \u0441 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c<\/h4>\n<p>\u041f\u0435\u0440\u0435\u0434 \u043a\u0430\u0436\u0434\u044b\u043c \u0437\u0430\u043c\u0435\u0440\u043e\u043c \u043c\u044b \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c <img decoding=\"async\" class=\"formula inline\" source=\"N\" alt=\"N\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e5c\/109\/2a6\/e5c1092a620fc6c8942120fa899ebdee.svg\" width=\"18\" height=\"18\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e5c\/109\/2a6\/e5c1092a620fc6c8942120fa899ebdee.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e5c\/109\/2a6\/e5c1092a620fc6c8942120fa899ebdee.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440, \u043a\u0430\u043a \u0432 \u0442\u0435\u0441\u0442\u0435 \u00ab\u0412\u0441\u0442\u0430\u0432\u043a\u0438 \u043f\u0430\u0440 \u0441 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c\u00bb. \u0417\u0430\u0442\u0435\u043c \u043c\u044b \u0438\u0449\u0435\u043c \u043a\u0430\u0436\u0434\u044b\u0439 \u043a\u043b\u044e\u0447 \u043e\u0434\u0438\u043d \u0437\u0430 \u0434\u0440\u0443\u0433\u0438\u043c \u0432 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435, \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u043c \u043e\u0442 \u0442\u043e\u0433\u043e, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u043d\u0438 \u0431\u044b\u043b\u0438 \u0432\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/cb6\/73d\/9ab\/cb673d9ab79a0ccb6f2ffd6e2bc994b9.png\" alt=\"\" title=\"\" width=\"750\" height=\"500\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/cb6\/73d\/9ab\/cb673d9ab79a0ccb6f2ffd6e2bc994b9.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/cb6\/73d\/9ab\/cb673d9ab79a0ccb6f2ffd6e2bc994b9.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<h4>\u041f\u043e\u0438\u0441\u043a \u043d\u0435\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043f\u0430\u0440<\/h4>\n<p>\u041f\u0435\u0440\u0435\u0434 \u043a\u0430\u0436\u0434\u044b\u043c \u0437\u0430\u043c\u0435\u0440\u043e\u043c \u043c\u044b \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c  \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0442\u0430\u043a\u0438\u043c \u0436\u0435 \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043a\u0430\u043a \u0432 \u0442\u0435\u0441\u0442\u0435 \u00ab\u0412\u0441\u0442\u0430\u0432\u043a\u0438 \u043f\u0430\u0440 \u0441 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c\u00bb. \u0417\u0430\u0442\u0435\u043c \u043c\u044b \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c \u0434\u0440\u0443\u0433\u043e\u0439 \u0432\u0435\u043a\u0442\u043e\u0440  \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0441\u0442\u0440\u043e\u043a, \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0449\u0438\u0439\u0441\u044f \u043e\u0442 \u0432\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u0438 \u043f\u044b\u0442\u0430\u0435\u043c\u0441\u044f \u043d\u0430\u0439\u0442\u0438 \u044d\u0442\u0438 \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/6da\/074\/5d7\/6da0745d7be98e53c3d7c7bd46ace44f.png\" alt=\"\" title=\"\" width=\"750\" height=\"500\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/6da\/074\/5d7\/6da0745d7be98e53c3d7c7bd46ace44f.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/6da\/074\/5d7\/6da0745d7be98e53c3d7c7bd46ace44f.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<\/div>\n<\/details>\n<\/div>\n<\/details>\n<\/div>\n<\/details>\n<p>\u0418\u0442\u0430\u043a, \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u043e\u0434\u0438\u043d\u043e\u0447\u043d\u044b\u0445 \u0432\u0441\u0442\u0430\u0432\u043e\u043a \u0432 \u043f\u043b\u043e\u0441\u043a\u0438\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b, \u043a\u0430\u043a \u0438 \u043e\u0436\u0438\u0434\u0430\u043b\u043e\u0441\u044c, \u043e\u0447\u0435\u043d\u044c \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e (\u044f \u0434\u0430\u0436\u0435 \u043d\u0435 \u0441\u043c\u043e\u0433 \u0434\u043e\u0436\u0434\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0437\u0430\u043c\u0435\u0440\u043e\u0432 \u0434\u043b\u044f <img decoding=\"async\" class=\"formula inline\" source=\"N \\in [200\\ 000, 3\\ 000\\ 000]\" alt=\"N \\in [200\\ 000, 3\\ 000\\ 000]\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/789\/e10\/e22\/789e10e225e8356eb2b37f7fee760596.svg\" width=\"214\" height=\"24\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/789\/e10\/e22\/789e10e225e8356eb2b37f7fee760596.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/789\/e10\/e22\/789e10e225e8356eb2b37f7fee760596.svg 781w\" loading=\"lazy\" decode=\"async\"\/>, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u043e\u0432\u0435\u043b \u0437\u0430\u043c\u0435\u0440\u044b \u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u0434\u043b\u044f <img decoding=\"async\" class=\"formula inline\" source=\"N \\in [20\\ 000, 100\\ 000]\" alt=\"N \\in [20\\ 000, 100\\ 000]\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/5\/5a\/5a3\/5a33de520ece9275430653d3e0ce8cfb.svg\" width=\"auto\" height=\"auto\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/5\/5a\/5a3\/5a33de520ece9275430653d3e0ce8cfb.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/5\/5a\/5a3\/5a33de520ece9275430653d3e0ce8cfb.svg 781w\" loading=\"lazy\" decode=\"async\"\/>): \u0445\u043e\u0442\u044c \u043d\u0430\u0439\u0442\u0438 \u043c\u0435\u0441\u0442\u043e \u0434\u043b\u044f \u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 <img decoding=\"async\" class=\"formula inline\" source=\"O(log \\  N)\" alt=\"O(log \\  N)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/3fa\/612\/794\/3fa612794b561975b989b1f28c146b22.svg\" width=\"81\" height=\"24\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/3fa\/612\/794\/3fa612794b561975b989b1f28c146b22.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/3fa\/612\/794\/3fa612794b561975b989b1f28c146b22.svg 781w\" loading=\"lazy\" decode=\"async\"\/>, \u043d\u043e \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u0432 \u0432\u0435\u043a\u0442\u043e\u0440 \u2014 \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 <img decoding=\"async\" class=\"formula inline\" source=\"O(N)\" alt=\"O(N)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/133\/080\/d5f\/133080d5f08c4bf547c8f0a2660405b9.svg\" width=\"50\" height=\"24\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/133\/080\/d5f\/133080d5f08c4bf547c8f0a2660405b9.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/133\/080\/d5f\/133080d5f08c4bf547c8f0a2660405b9.svg 781w\" loading=\"lazy\" decode=\"async\"\/>.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f1b\/578\/cce\/f1b578cce36a951d742620e81af9f357.png\" alt=\"\u0411\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0432\u0441\u0442\u0430\u0432\u043a\u0438 N \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440. \u041a\u043b\u044e\u0447 \u2014 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 int64_t, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u2014 int64_t{1}. \u041e\u0441\u044c X \u2014 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432. \u041e\u0441\u044c Y \u2014 \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b.\" title=\"\u0411\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0432\u0441\u0442\u0430\u0432\u043a\u0438 N \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440. \u041a\u043b\u044e\u0447 \u2014 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 int64_t, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u2014 int64_t{1}. \u041e\u0441\u044c X \u2014 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432. \u041e\u0441\u044c Y \u2014 \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b.\" width=\"750\" height=\"500\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/f1b\/578\/cce\/f1b578cce36a951d742620e81af9f357.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f1b\/578\/cce\/f1b578cce36a951d742620e81af9f357.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0411\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0432\u0441\u0442\u0430\u0432\u043a\u0438 N \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440. \u041a\u043b\u044e\u0447 \u2014 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 int64_t, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u2014 int64_t{1}. \u041e\u0441\u044c X \u2014 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432. \u041e\u0441\u044c Y \u2014 \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b.<\/figcaption><\/div>\n<\/figure>\n<p>\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0442\u0430\u043a\u0436\u0435 \u043d\u0438\u0447\u0435\u043c \u043d\u0435 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u0432\u0441\u0442\u0430\u0432\u043a\u0438: \u043f\u043b\u043e\u0441\u043a\u0438\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0434\u0440\u0430\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u044e\u0442 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u043c.<\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u0441\u0430\u043c\u0438, \u0435\u0441\u043b\u0438 \u043d\u0435 \u0432\u0435\u0440\u0438\u0442\u0435<\/summary>\n<div class=\"spoiler__content\">\n<p>\u041e\u0441\u0442\u043e\u0440\u043e\u0436\u043d\u043e, \u0433\u0440\u0430\u0444\u0438\u043a\u0438 <code>std::flat_map<\/code> \u0438 <code>boost::containers::flat_map<\/code> \u0441\u043b\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0432 \u043e\u0434\u043d\u0443 \u043b\u0438\u043d\u0438\u044e!<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/951\/da9\/560\/951da95607178e56db67abba3f1f1347.png\" alt=\"\u0411\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f N \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u0440\u0430\u043d\u0434\u043e\u043c\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435. \u041a\u043b\u044e\u0447\u0438 \u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u2014 \u043a\u0430\u043a \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0435. \u041e\u0441\u044c X \u2014 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432. \u041e\u0441\u044c Y \u2014 \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b.\" title=\"\u0411\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f N \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u0440\u0430\u043d\u0434\u043e\u043c\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435. \u041a\u043b\u044e\u0447\u0438 \u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u2014 \u043a\u0430\u043a \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0435. \u041e\u0441\u044c X \u2014 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432. \u041e\u0441\u044c Y \u2014 \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b.\" width=\"750\" height=\"500\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/951\/da9\/560\/951da95607178e56db67abba3f1f1347.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/951\/da9\/560\/951da95607178e56db67abba3f1f1347.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0411\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f N \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u0440\u0430\u043d\u0434\u043e\u043c\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435. \u041a\u043b\u044e\u0447\u0438 \u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u2014 \u043a\u0430\u043a \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0435. \u041e\u0441\u044c X \u2014 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432. \u041e\u0441\u044c Y \u2014 \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b.<\/figcaption><\/div>\n<\/figure>\n<\/div>\n<\/details>\n<p>\u0415\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0442\u0443\u0442 \u2014 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 \u043d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u0439 Zach Laine, \u0447\u0442\u043e flat map \u0441 \u0434\u0432\u0443\u043c\u044f \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u043c\u0438 \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c (<code>std::flat_map<\/code>) \u043e\u0431\u0433\u043e\u043d\u044f\u0435\u0442 flat map \u0441 \u043e\u0434\u043d\u0438\u043c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u043c \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c (<code>boost::containers::flat_map<\/code>) \u043f\u043e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432. \u041d\u043e \u043d\u0438 \u043e \u043a\u0430\u043a\u0438\u0445 40\u201360% \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044f \u0442\u0443\u0442 \u0440\u0435\u0447\u0438, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043d\u0435 \u0438\u0434\u0435\u0442. \u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u043c\u044b\u0439 \u043f\u0440\u0438\u0440\u043e\u0441\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u2014 12%.<\/p>\n<p>\u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u043d\u043e \u043f\u0440\u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0438 \u0442\u0430\u043a\u043e\u0439 \u043f\u0440\u0438\u0440\u043e\u0441\u0442 \u043d\u0435 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u0442\u0441\u044f, \u0445\u043e\u0442\u044f, \u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b, \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u0445\u043e\u0436\u0438.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0436\u0435 \u043d\u0430 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043f\u043e\u0438\u0441\u043a\u0430, \u0442\u043e \u0442\u0443\u0442, \u043f\u0440\u0438 \u043c\u0430\u043b\u044b\u0445 \u0440\u0430\u0437\u043c\u0435\u0440\u0430\u0445 \u043a\u043b\u044e\u0447\u0435\u0439, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, 8-\u0431\u0430\u0439\u0442\u043d\u043e\u043c <code>std::int64_t<\/code>, \u0438 <strong>\u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043e\u0431\u044a\u0435\u043c\u0430\u0445<\/strong>, \u043f\u043b\u043e\u0441\u043a\u0438\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043f\u0440\u0435\u0432\u043e\u0441\u0445\u043e\u0434\u044f\u0442 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0435\u043d\u043d\u044b\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b.  <\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f46\/e91\/f23\/f46e91f2329cce76b8efa8d3f3a5f45e.png\" alt=\"\u0411\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u043f\u043e\u0438\u0441\u043a\u0430 \u043f\u0430\u0440 \u0432 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435. \u041a\u043b\u044e\u0447\u0438 \u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u2014 \u043a\u0430\u043a \u0432 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0435 \u0432\u0441\u0442\u0430\u0432\u043a\u0438. \u041e\u0441\u044c X \u2014 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432. \u041e\u0441\u044c Y \u2014 \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b.\" title=\"\u0411\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u043f\u043e\u0438\u0441\u043a\u0430 \u043f\u0430\u0440 \u0432 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435. \u041a\u043b\u044e\u0447\u0438 \u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u2014 \u043a\u0430\u043a \u0432 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0435 \u0432\u0441\u0442\u0430\u0432\u043a\u0438. \u041e\u0441\u044c X \u2014 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432. \u041e\u0441\u044c Y \u2014 \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b.\" width=\"750\" height=\"500\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/f46\/e91\/f23\/f46e91f2329cce76b8efa8d3f3a5f45e.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f46\/e91\/f23\/f46e91f2329cce76b8efa8d3f3a5f45e.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0411\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u043f\u043e\u0438\u0441\u043a\u0430 \u043f\u0430\u0440 \u0432 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435. \u041a\u043b\u044e\u0447\u0438 \u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u2014 \u043a\u0430\u043a \u0432 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0435 \u0432\u0441\u0442\u0430\u0432\u043a\u0438. \u041e\u0441\u044c X \u2014 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432. \u041e\u0441\u044c Y \u2014 \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b.<\/figcaption><\/div>\n<\/figure>\n<p>\u041a\u0430\u043a \u0438 \u043f\u0440\u0438 15-\u0441\u0438\u043c\u0432\u043e\u043b\u044c\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u0435 <code>std::string<\/code>.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/bbb\/8b9\/4f1\/bbb8b94f1f5f709786bb05fa36c40963.png\" alt=\"\u0411\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u043f\u043e\u0438\u0441\u043a\u0430 \u043f\u0430\u0440 \u0432 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435. \u041a\u043b\u044e\u0447 \u2014 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 15-\u0441\u0438\u043c\u0432\u043e\u043b\u044c\u043d\u044b\u0439 std::string, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u2014 int64_t{1}. \u041e\u0441\u044c X \u2014 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432. \u041e\u0441\u044c Y \u2014 \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b.\" title=\"\u0411\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u043f\u043e\u0438\u0441\u043a\u0430 \u043f\u0430\u0440 \u0432 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435. \u041a\u043b\u044e\u0447 \u2014 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 15-\u0441\u0438\u043c\u0432\u043e\u043b\u044c\u043d\u044b\u0439 std::string, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u2014 int64_t{1}. \u041e\u0441\u044c X \u2014 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432. \u041e\u0441\u044c Y \u2014 \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b.\" width=\"750\" height=\"500\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/bbb\/8b9\/4f1\/bbb8b94f1f5f709786bb05fa36c40963.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/bbb\/8b9\/4f1\/bbb8b94f1f5f709786bb05fa36c40963.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0411\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u043f\u043e\u0438\u0441\u043a\u0430 \u043f\u0430\u0440 \u0432 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435. \u041a\u043b\u044e\u0447 \u2014 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 15-\u0441\u0438\u043c\u0432\u043e\u043b\u044c\u043d\u044b\u0439 std::string, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u2014 int64_t{1}. \u041e\u0441\u044c X \u2014 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432. \u041e\u0441\u044c Y \u2014 \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b.<\/figcaption><\/div>\n<\/figure>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e \u043f\u0440\u0438 50-\u0441\u0438\u043c\u0432\u043e\u043b\u044c\u043d\u043e\u043c \u043a\u043b\u044e\u0447\u0435 <code>std::string<\/code> \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043f\u043b\u043e\u0441\u043a\u0438\u0445 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u0445\u0443\u0434\u0448\u0430\u0435\u0442\u0441\u044f \u0438 \u0443\u0436\u0435 \u043d\u0435 \u043c\u043d\u043e\u0433\u0438\u043c \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043b\u0443\u0447\u0448\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0435\u043d\u043d\u044b\u0445 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/2a0\/bb2\/cc2\/2a0bb2cc2280d2e6bc32f12d2f971346.png\" alt=\"\u0411\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u043f\u043e\u0438\u0441\u043a\u0430 \u043f\u0430\u0440 \u0432 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435. \u041a\u043b\u044e\u0447 \u2014 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 50-\u0441\u0438\u043c\u0432\u043e\u043b\u044c\u043d\u044b\u0439 std::string, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u2014 int64_t{1}. \u041e\u0441\u044c X \u2014 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432. \u041e\u0441\u044c Y \u2014 \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b.\" title=\"\u0411\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u043f\u043e\u0438\u0441\u043a\u0430 \u043f\u0430\u0440 \u0432 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435. \u041a\u043b\u044e\u0447 \u2014 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 50-\u0441\u0438\u043c\u0432\u043e\u043b\u044c\u043d\u044b\u0439 std::string, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u2014 int64_t{1}. \u041e\u0441\u044c X \u2014 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432. \u041e\u0441\u044c Y \u2014 \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b.\" width=\"750\" height=\"500\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/2a0\/bb2\/cc2\/2a0bb2cc2280d2e6bc32f12d2f971346.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/2a0\/bb2\/cc2\/2a0bb2cc2280d2e6bc32f12d2f971346.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0411\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u043f\u043e\u0438\u0441\u043a\u0430 \u043f\u0430\u0440 \u0432 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435. \u041a\u043b\u044e\u0447 \u2014 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 50-\u0441\u0438\u043c\u0432\u043e\u043b\u044c\u043d\u044b\u0439 std::string, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u2014 int64_t{1}. \u041e\u0441\u044c X \u2014 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432. \u041e\u0441\u044c Y \u2014 \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b.<\/figcaption><\/div>\n<\/figure>\n<p>\u041d\u0430 \u0443\u0441\u043b\u043e\u0432\u043d\u043e \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0445 (20&#8217;000\u2013100&#8217;000 \u043f\u0430\u0440) \u0436\u0435 \u043e\u0431\u044a\u0435\u043c\u0430\u0445 \u043d\u0435\u0432\u044b\u0441\u043e\u043a\u0438\u0439 \u043f\u0440\u0438\u0440\u043e\u0441\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u0432\u0441\u0435\u0445 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f\u0445: \u0434\u0430\u0436\u0435 \u0441 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u043c, 8-\u0431\u0438\u0442\u043d\u044b\u043c, \u043a\u043b\u044e\u0447\u043e\u043c, <code>std::flat_map<\/code> \u043b\u0438\u0448\u044c \u043d\u0435\u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u0435\u0432\u043e\u0441\u0445\u043e\u0434\u0438\u0442 <code>boost::map<\/code>.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/9a6\/729\/7d6\/9a67297d6f2a482daeae40ed1eb45014.png\" alt=\"\u0411\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u043f\u043e\u0438\u0441\u043a\u0430 \u043f\u0430\u0440 \u0432 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435. \u041a\u043b\u044e\u0447 \u2014 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 int64_t, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u2014 int64_t{1}. \u041e\u0441\u044c X \u2014 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432. \u041e\u0441\u044c Y \u2014 \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b.\" title=\"\u0411\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u043f\u043e\u0438\u0441\u043a\u0430 \u043f\u0430\u0440 \u0432 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435. \u041a\u043b\u044e\u0447 \u2014 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 int64_t, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u2014 int64_t{1}. \u041e\u0441\u044c X \u2014 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432. \u041e\u0441\u044c Y \u2014 \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b.\" width=\"750\" height=\"500\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/9a6\/729\/7d6\/9a67297d6f2a482daeae40ed1eb45014.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/9a6\/729\/7d6\/9a67297d6f2a482daeae40ed1eb45014.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0411\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u043f\u043e\u0438\u0441\u043a\u0430 \u043f\u0430\u0440 \u0432 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435. \u041a\u043b\u044e\u0447 \u2014 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 int64_t, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u2014 int64_t{1}. \u041e\u0441\u044c X \u2014 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432. \u041e\u0441\u044c Y \u2014 \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b.<\/figcaption><\/div>\n<\/figure>\n<p>\u0410 \u043d\u0430 \u0441\u043e\u0432\u0441\u0435\u043c \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0445 \u043e\u0431\u044a\u0435\u043c\u0430\u0445 (10\u2013100 \u043f\u0430\u0440) \u0432\u0441\u0451 \u0435\u0449\u0435 \u0445\u0443\u0436\u0435: \u043f\u043b\u043e\u0441\u043a\u0438\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u043a\u0430\u043a \u0441 \u043a\u043b\u044e\u0447\u043e\u043c <code>int64_t<\/code>, \u0442\u0430\u043a \u0438 \u0441 \u043a\u043b\u044e\u0447\u043e\u043c <code>std::string<\/code> \u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0442\u0441\u044f \u0430\u0443\u0442\u0441\u0430\u0439\u0434\u0435\u0440\u0430\u043c\u0438 \u0438 \u0435\u0441\u043b\u0438 \u043a\u043e\u0433\u043e-\u0442\u043e \u0438 \u043e\u0431\u0433\u043e\u043d\u044f\u044e\u0442, \u0442\u043e \u043e\u0447\u0435\u043d\u044c \u043d\u0435\u0443\u0432\u0435\u0440\u0435\u043d\u043d\u043e.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0436\u0435 \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u043f\u0440\u043e \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u044e, \u0442\u043e \u0442\u0443\u0442 \u043f\u043b\u043e\u0441\u043a\u0438\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u043e\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442 \u0432\u0435\u0440\u0445 \u043d\u0430\u0434 \u0432\u0441\u0435\u043c\u0438 \u0441\u0432\u043e\u0438\u043c\u0438 \u0441\u043e\u043f\u0435\u0440\u043d\u0438\u043a\u0430\u043c\u0438 \u0431\u0435\u0437 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/329\/eb2\/719\/329eb27193c7fafcb4c4c95c3c0e5c74.png\" alt=\"\u0411\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438 \u043f\u043e \u043f\u0430\u0440\u0430\u043c. \u041a\u043b\u044e\u0447 \u2014 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 int64_t, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u2014 int64_t{1}. \u041e\u0441\u044c X \u2014 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432. \u041e\u0441\u044c Y \u2014 \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b. \" title=\"\u0411\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438 \u043f\u043e \u043f\u0430\u0440\u0430\u043c. \u041a\u043b\u044e\u0447 \u2014 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 int64_t, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u2014 int64_t{1}. \u041e\u0441\u044c X \u2014 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432. \u041e\u0441\u044c Y \u2014 \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b. \" width=\"750\" height=\"500\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/329\/eb2\/719\/329eb27193c7fafcb4c4c95c3c0e5c74.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/329\/eb2\/719\/329eb27193c7fafcb4c4c95c3c0e5c74.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0411\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438 \u043f\u043e \u043f\u0430\u0440\u0430\u043c. \u041a\u043b\u044e\u0447 \u2014 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 int64_t, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u2014 int64_t{1}. \u041e\u0441\u044c X \u2014 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432. \u041e\u0441\u044c Y \u2014 \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b. <\/figcaption><\/div>\n<\/figure>\n<p>\u0411\u0435\u0437 \u043b\u0438\u0448\u043d\u0438\u0445 \u0441\u043b\u043e\u0432 \u0442\u0430\u043a\u0436\u0435 \u043e\u0442\u043c\u0435\u0442\u0438\u043c, \u0447\u0442\u043e, \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u043e, \u043f\u043b\u043e\u0441\u043a\u0438\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u044f\u044e\u0442 \u043c\u0435\u043d\u044c\u0448\u0435 \u043f\u0430\u043c\u044f\u0442\u0438, \u0447\u0435\u043c \u043d\u0435 \u043f\u043b\u043e\u0441\u043a\u0438\u0435.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/82b\/4af\/fad\/82b4affad98b4244dda7be828a1f0f4d.png\" alt=\"\u0413\u0440\u0430\u0444 \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u044f \u041e\u0417\u0423. \u041a\u043b\u044e\u0447 \u2014 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 int64_t, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u2014 int64_t{1}. \u041e\u0441\u044c X \u2014 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432. \u041e\u0441\u044c Y \u2014 \u043e\u0431\u044a\u0435\u043c \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u043c\u043e\u0439 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u043c \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438. \" title=\"\u0413\u0440\u0430\u0444 \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u044f \u041e\u0417\u0423. \u041a\u043b\u044e\u0447 \u2014 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 int64_t, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u2014 int64_t{1}. \u041e\u0441\u044c X \u2014 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432. \u041e\u0441\u044c Y \u2014 \u043e\u0431\u044a\u0435\u043c \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u043c\u043e\u0439 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u043c \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438. \" width=\"750\" height=\"500\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/82b\/4af\/fad\/82b4affad98b4244dda7be828a1f0f4d.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/82b\/4af\/fad\/82b4affad98b4244dda7be828a1f0f4d.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0413\u0440\u0430\u0444 \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u044f \u041e\u0417\u0423. \u041a\u043b\u044e\u0447 \u2014 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 int64_t, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u2014 int64_t{1}. \u041e\u0441\u044c X \u2014 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432. \u041e\u0441\u044c Y \u2014 \u043e\u0431\u044a\u0435\u043c \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u043c\u043e\u0439 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u043c \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438. <\/figcaption><\/div>\n<\/figure>\n<p>\u041d\u043e \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0442\u043e\u0436\u0435 \u043d\u0435 \u0442\u0430\u043a \u043f\u043b\u043e\u0445\u0438 \u0438 \u043f\u0440\u0438 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043a\u043b\u044e\u0447\u0430\u0445 (50-\u0441\u0438\u043c\u0432\u043e\u043b\u044c\u043d\u044b\u0439 <code>std::string<\/code>) \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u0432 \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0438 \u043f\u0430\u043c\u044f\u0442\u0438 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0443\u0436\u0435 \u043d\u0435 \u0442\u0430\u043a\u043e\u0439 \u0431\u043e\u043b\u044c\u0448\u043e\u0439.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/913\/2ae\/b56\/9132aeb5613fe1097612353b73054541.png\" alt=\"\u0413\u0440\u0430\u0444 \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u044f \u041e\u0417\u0423. \u041a\u043b\u044e\u0447 \u2014 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 50-\u0441\u0438\u043c\u0432\u043e\u043b\u044c\u043d\u044b\u0439 std::string, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u2014 int64_t{1}. \u041e\u0441\u044c X \u2014 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432. \u041e\u0441\u044c Y \u2014 \u043e\u0431\u044a\u0435\u043c \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u043c\u043e\u0439 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u043c \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438. \" title=\"\u0413\u0440\u0430\u0444 \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u044f \u041e\u0417\u0423. \u041a\u043b\u044e\u0447 \u2014 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 50-\u0441\u0438\u043c\u0432\u043e\u043b\u044c\u043d\u044b\u0439 std::string, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u2014 int64_t{1}. \u041e\u0441\u044c X \u2014 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432. \u041e\u0441\u044c Y \u2014 \u043e\u0431\u044a\u0435\u043c \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u043c\u043e\u0439 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u043c \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438. \" width=\"750\" height=\"500\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/913\/2ae\/b56\/9132aeb5613fe1097612353b73054541.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/913\/2ae\/b56\/9132aeb5613fe1097612353b73054541.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0413\u0440\u0430\u0444 \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u044f \u041e\u0417\u0423. \u041a\u043b\u044e\u0447 \u2014 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 50-\u0441\u0438\u043c\u0432\u043e\u043b\u044c\u043d\u044b\u0439 std::string, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u2014 int64_t{1}. \u041e\u0441\u044c X \u2014 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432. \u041e\u0441\u044c Y \u2014 \u043e\u0431\u044a\u0435\u043c \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u043c\u043e\u0439 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u043c \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438. <\/figcaption><\/div>\n<\/figure>\n<h2>\u0418\u0442\u043e\u0433<\/h2>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0432\u044b\u0432\u043e\u0434\u044b:<\/p>\n<ul>\n<li>\n<p>\u0412\u0441\u0442\u0430\u0432\u043a\u0430 \u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0438\u0437 \u043f\u043b\u043e\u0441\u043a\u0438\u0445 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 \u044d\u0442\u043e \u0443\u0436\u0430\u0441\u043d\u043e \u0434\u043e\u0440\u043e\u0433\u043e, \u0438 \u043b\u0443\u0447\u0448\u0435 \u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0436\u0435.<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u0438\u0441\u043a \u0432 \u043f\u043b\u043e\u0441\u043a\u0438\u0445 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u0438\u043b\u044c\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u0435\u0435, \u0447\u0435\u043c \u0432 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0435\u043d\u043d\u044b\u0445 \u0430\u0441\u0441\u043e\u0446\u0438\u0430\u0442\u0438\u0432\u043d\u044b\u0445, \u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043e\u0431\u044a\u0435\u043c\u0430\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 (&gt; 1&#8217;000&#8217;000 \u043f\u0430\u0440) \u0438 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0445 \u0440\u0430\u0437\u043c\u0435\u0440\u0430\u0445 \u043a\u043b\u044e\u0447\u0435\u0439. \u0415\u0441\u043b\u0438 \u043f\u0430\u0440 \u043c\u0435\u043d\u044c\u0448\u0435 (20&#8217;000\u2013100&#8217;000) \u0438\u043b\u0438 \u043a\u043b\u044e\u0447\u0438 \u0431\u043e\u043b\u044c\u0448\u0438\u0435, \u0442\u043e \u043e\u043d \u0431\u044b\u0441\u0442\u0440\u0435\u0435, \u043d\u043e \u043d\u0435 \u0441\u0438\u043b\u044c\u043d\u043e. \u0415\u0441\u043b\u0438 \u0436\u0435 \u043f\u0430\u0440 \u0441\u043e\u0432\u0441\u0435\u043c \u043c\u0430\u043b\u043e (10\u2013100), \u0442\u043e \u043e\u043d\u0438 \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0434\u0430\u0436\u0435 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435.<\/p>\n<\/li>\n<li>\n<p>\u0413\u0440\u0430\u0444\u0438\u043a \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438 \u043f\u043e \u043f\u043b\u043e\u0441\u043a\u0438\u043c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u043c \u043d\u0435\u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e \u043a\u0440\u0430\u0441\u0438\u0432 \u2014 \u043e\u043d \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u043b\u043e\u0441\u043a\u0438\u0439. \u041f\u043e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438 \u043f\u043b\u043e\u0441\u043a\u0438\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u043e\u0431\u0433\u043e\u043d\u044f\u044e\u0442 \u0432\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u043d\u0430 \u043f\u043e\u0440\u044f\u0434\u043a\u0438.<\/p>\n<\/li>\n<li>\n<p>\u041f\u043b\u043e\u0441\u043a\u0438\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0442 \u043c\u0435\u043d\u044c\u0448\u0435 \u043f\u0430\u043c\u044f\u0442\u0438, \u0447\u0435\u043c \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0435. \u0414\u043b\u044f \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0445 \u043a\u043b\u044e\u0447\u0435\u0439 \u2014 \u043d\u0430 \u0441\u043e\u0442\u043d\u0438 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043e\u0432 \u043c\u0435\u043d\u044c\u0448\u0435, \u0434\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u2014 \u043d\u0430 \u0434\u0435\u0441\u044f\u0442\u043a\u0438.<\/p>\n<\/li>\n<\/ul>\n<p>\u0418 \u0434\u0430\u0442\u044c \u0441\u043e\u0432\u0435\u0442: \u0435\u0441\u043b\u0438 \u0432\u0430\u043c \u043d\u0443\u0436\u0435\u043d \u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0435\u043d\u043d\u044b\u0439 \u0430\u0441\u0441\u043e\u0446\u0438\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0438 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043e\u0434\u0438\u043d \u0438\u0437 \u043f\u043b\u043e\u0441\u043a\u0438\u0445 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432, \u0430\u0441\u0441\u0438\u043c\u043f\u0442\u043e\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u043d\u0438 \u043d\u0438\u0447\u0435\u043c \u043d\u0435 \u0445\u0443\u0436\u0435 \u043f\u0440\u043e\u0441\u0442\u044b\u0445, \u043d\u043e \u043f\u043e \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0435 \u0432\u044b\u0438\u0433\u0440\u044b\u0432\u0430\u044e\u0442. \u0418\u043d\u0430\u0447\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 <code>std::(multi)map<\/code> \u0438 <code>std::(multi)set<\/code>. \u0415\u0441\u043b\u0438 \u0436\u0435 \u0432\u0430\u043c \u0434\u0430\u0436\u0435 \u043d\u0435 \u0432\u0430\u0436\u0435\u043d \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u2014 \u0437\u043d\u0430\u0447\u0438\u0442, \u0432\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u043d\u044b \u043d\u0438 \u043f\u043b\u043e\u0441\u043a\u0438\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b, \u043d\u0438 <code>std::(multi)map<\/code> \u0438 <code>std::(multi)set<\/code>, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0445\u044d\u0448-\u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u043f\u043e \u0432\u0430\u0448\u0435\u043c\u0443 \u0432\u043a\u0443\u0441\u0443, \u0440\u0430\u0437\u0432\u0435 \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0432\u0430\u0448 \u0441\u043b\u0443\u0447\u0430\u0439 \u043d\u0435 \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u043d \u043a \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438 \u2014 \u0442\u0443\u0442 \u043f\u043b\u043e\u0441\u043a\u0438\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u043d\u0435 \u0437\u043d\u0430\u044e\u0442 \u0440\u0430\u0432\u043d\u044b\u0445.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/912774\/\"> https:\/\/habr.com\/ru\/articles\/912774\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u041d\u043e\u0432\u044b\u0439 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442 C++, C++23, \u0432\u043f\u0435\u0440\u0432\u044b\u0435 \u0441 C++11 \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u043b \u0432\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u0443\u044e \u043b\u0438\u043d\u0435\u0439\u043a\u0443 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432: \u043f\u043e\u043c\u0438\u043c\u043e \u0437\u043d\u0430\u043a\u043e\u043c\u044b\u0445 <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/container\/array.html\" rel=\"noopener noreferrer nofollow\"><code>array<\/code><\/a>, <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/container\/vector.html\" rel=\"noopener noreferrer nofollow\"><code>vector<\/code><\/a>, <code>(unordered_)set<\/code>, <code>(unordered_)map<\/code> \u0438 \u043f\u0440\u043e\u0447\u0438\u043c \u0432 \u043d\u0435\u0435 \u0442\u0435\u043f\u0435\u0440\u044c \u0432\u0445\u043e\u0434\u044f\u0442 \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u044b\u0435 <a href=\"https:\/\/cppreference.com\/w\/cpp\/container\/flat_set.html\" rel=\"noopener noreferrer nofollow\"><code>flat_set<\/code><\/a>, <a href=\"https:\/\/cppreference.com\/w\/cpp\/container\/flat_map.html\" rel=\"noopener noreferrer nofollow\"><code>flat_map<\/code><\/a>, <a href=\"https:\/\/cppreference.com\/w\/cpp\/container\/flat_multiset.html\" rel=\"noopener noreferrer nofollow\"><code>flat_multiset<\/code><\/a> \u0438 <a href=\"https:\/\/cppreference.com\/w\/cpp\/container\/flat_multimap.html\" rel=\"noopener noreferrer nofollow\"><code>flat_multimap<\/code><\/a>. \u041e\u0442\u0432\u0435\u0442\u0438\u043c \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441\u044b, \u0447\u0442\u043e \u044d\u0442\u043e \u0437\u0430 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b, \u043a\u043e\u0433\u0434\u0430 \u043e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u044b, \u0441\u0440\u0430\u0432\u043d\u0438\u043c \u0434\u0438\u0437\u0430\u0439\u043d \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u00ab\u043f\u043b\u043e\u0441\u043a\u0438\u0445\u00bb \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 \u0441 \u0434\u0438\u0437\u0430\u0439\u043d\u043e\u043c \u043f\u043b\u043e\u0441\u043a\u0438\u0445 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 \u0438\u0437 <a href=\"https:\/\/live.boost.org\/doc\/libs\/1_88_0\/doc\/html\/container\/non_standard_containers.html#container.non_standard_containers.flat_xxx\" rel=\"noopener noreferrer nofollow\">Boost<\/a> \u0438 <a href=\"https:\/\/www.etlcpp.com\/flat_map.html\" rel=\"noopener noreferrer nofollow\">ETL<\/a> \u0438, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0451\u043c \u0437\u0430\u043c\u0435\u0440\u044b \u0438 \u0441\u0440\u0430\u0432\u043d\u0438\u043c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c <code>flat_ <\/code>\u0438 \u043d\u0435 <code>flat_<\/code> \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432.<\/p>\n<p>\u0412\u0430\u0436\u043d\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0432\u0441\u0435 \u044d\u0442\u0438 \u00ab\u043f\u043b\u043e\u0441\u043a\u0438\u0435\u00bb \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0434\u0430\u0436\u0435 \u043d\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0432 \u0441\u0442\u0440\u043e\u0433\u043e\u043c \u0441\u043c\u044b\u0441\u043b\u0435, \u0430 \u043b\u0438\u0448\u044c <em>\u0430\u0434\u0430\u043f\u0442\u0435\u0440\u044b \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432: <\/em>\u043f\u043e\u0434\u043e\u0431\u043d\u043e <a href=\"https:\/\/cppreference.com\/w\/cpp\/container\/stack.html\" rel=\"noopener noreferrer nofollow\"><code>stack<\/code><\/a> \u0438 <a href=\"https:\/\/cppreference.com\/w\/cpp\/container\/queue.html\" rel=\"noopener noreferrer nofollow\"><code>queue<\/code><\/a> \u043e\u043d\u0438 \u043d\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0442 \u043a\u0430\u043a\u0443\u044e-\u0442\u043e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445, \u0430 \u043b\u0438\u0448\u044c \u0432\u0432\u043e\u0434\u044f\u0442 \u0441\u0432\u043e\u0439 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u043f\u043e\u0432\u0435\u0440\u0445 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c\u043e\u0439 \u0434\u0440\u0443\u0433\u0438\u043c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u043c.<\/p>\n<p>\u0418 \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043d\u0430\u0447\u0430\u0442\u044c \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0438\u0435 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437 \u00ab\u043f\u043b\u043e\u0441\u043a\u0438\u0445\u00bb\u00a0\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 \u043f\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 \u0432\u0430\u0436\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u044c \u043e\u0434\u043d\u0443 \u043e\u0431\u0449\u0443\u044e \u0434\u043b\u044f \u043d\u0438\u0445 \u0432\u0441\u0435\u0445 \u0432\u0435\u0449\u044c: \u043e\u043d\u0438 \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u00bb\u043f\u043b\u043e\u0441\u043a\u0438\u043c\u0438\u00bb, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u043d\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043b\u043e\u0441\u043a\u0438\u0435 \u2014 \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c \u0443 \u043d\u0438\u0445 \u043b\u0435\u0436\u0430\u0442 <strong>\u043d\u0435 <\/strong><a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%9A%D1%80%D0%B0%D1%81%D0%BD%D0%BE-%D1%87%D1%91%D1%80%D0%BD%D0%BE%D0%B5_%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D0%BE\" rel=\"noopener noreferrer nofollow\"><strong>\u043a\u0440\u0430\u0441\u043d\u043e-\u0447\u0435\u0440\u043d\u044b\u0435<\/strong><\/a><strong> (\u0438\u043b\u0438 <\/strong><a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%90%D0%92%D0%9B-%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D0%BE\" rel=\"noopener noreferrer nofollow\"><strong>AVL<\/strong><\/a><strong>) \u0434\u0435\u0440\u0435\u0432\u044c\u044f<\/strong>, \u043a\u0430\u043a \u0443 <code>std::(multi)set<\/code> \u0438 <code>std::(multi)map<\/code> \u0438 <strong>\u043d\u0435 \u0445\u044d\u0448-\u0442\u0430\u0431\u043b\u0438\u0446\u044b<\/strong>, \u043a\u0430\u043a \u0443 <code>std::unordered_(multi)set<\/code> \u0438 <code>std::unordered_(multi)map<\/code>, \u0430 <strong>\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b<\/strong>.<\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u0430\u043a \u0431\u044b \u0432\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043b\u0438 <code>set<\/code>, \u0435\u0441\u043b\u0438 \u0432\u044b \u0431\u044b \u043d\u0435 \u0437\u043d\u0430\u043b\u0438 \u043e \u0432\u044b\u0448\u0435\u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u044b\u0445 \u0434\u0435\u0440\u0435\u0432\u044c\u044f\u0445? \u041b\u0435\u0433\u043a\u043e: \u0431\u0435\u0440\u0435\u043c <a href=\"https:\/\/cppreference.com\/w\/cpp\/container\/vector.html\" rel=\"noopener noreferrer nofollow\"><code>std::vector<\/code><\/a> \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u043c <code>insert<\/code> \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u043e\u043d \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u043b \u044d\u0442\u043e\u0442 \u0432\u0435\u043a\u0442\u043e\u0440 \u0432 \u043e\u0442\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438. \u0422\u043e \u0435\u0441\u0442\u044c, \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a:<\/p>\n<pre><code class=\"cpp\">template &lt;typename ...&gt; std::pair&lt;iterator, bool&gt; flat_set&lt;...&gt;::insert(const K&amp; value) {   \/\/ \u0418\u0449\u0435\u043c \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435 value \u0438\u043b\u0438 \u0436\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0435\u0435 \u043c\u0435\u0441\u0442\u043e \u0434\u043b\u044f \u0435\u0433\u043e \u0432\u0441\u0442\u0430\u0432\u043a\u0438   auto it = std::lower_bound(     vec.begin(), vec.end(), value   ); \/\/ \u0411\u0438\u043d\u0430\u0440\u043d\u044b\u0439 \u043f\u043e\u0438\u0441\u043a, O(log N)   \/\/ \u0415\u0441\u043b\u0438 \u043d\u0435 \u043d\u0430\u0448\u043b\u0438 \u0441\u043e\u0432\u0441\u0435\u043c \u0438\u043b\u0438 \u043d\u0430\u0448\u043b\u0438 \u043d\u0435 \u0442\u043e, \u0442\u043e \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c   if (it == vec.end() || value &lt; *it) {     vec.insert(       it, std::move(value)     ); \/\/ O(N) \u0438 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u043b\u043e\u043a\u0430\u0446\u0438\u044f :(     return std::pair&lt;iterator, bool&gt;{std::move(it), true};   }   \/\/ \u0418\u043d\u0430\u0447\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u043e\u0435   return std::pair&lt;iterator, bool&gt;{std::move(it), false}; }<\/code><\/pre>\n<p>\u0410 <code>find()<\/code> \u0432 \u0442\u0430\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0439 \u043f\u043e\u0438\u0441\u043a (\u0441\u043e \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e ). \u0422\u0430\u043a \u0432\u043e\u0442, \u0442\u0430\u043a \u0436\u0435 (\u043d\u043e \u0431\u043e\u043b\u0435\u0435 \u043e\u0431\u043e\u0431\u0449\u0435\u043d\u043d\u043e) \u0443\u0441\u0442\u0440\u043e\u0435\u043d \u0438 <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/container\/flat_set.html\" rel=\"noopener noreferrer nofollow\"><code>flat_set<\/code><\/a>, \u0438 <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/container\/flat_multiset.html\" rel=\"noopener noreferrer nofollow\"><code>flat_multiset<\/code><\/a> (\u0432 \u0435\u0433\u043e \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u043c\u0435\u0441\u0442\u043e <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/algorithm\/lower_bound.html\" rel=\"noopener noreferrer nofollow\"><code>lower_bound<\/code><\/a> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/algorithm\/upper_bound.html\" rel=\"noopener noreferrer nofollow\"><code>upper_bound<\/code><\/a> \u0438 \u043d\u043e\u0432\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0431\u0435\u0437\u0443\u0441\u043b\u043e\u0432\u043d\u043e), \u0438 <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/container\/flat_map.html\" rel=\"noopener noreferrer nofollow\"><code>flat_map<\/code><\/a> \u0438 <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/container\/flat_multimap.html\" rel=\"noopener noreferrer nofollow\"><code>flat_multimap<\/code><\/a> (\u043d\u043e \u0432 \u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u0435 \u043c\u044b \u043e\u043f\u0435\u0440\u0438\u0440\u0443\u0435\u043c \u0434\u0432\u0443\u043c\u044f \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u043c\u0438: \u043e\u0434\u043d\u0438\u043c \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043a\u043b\u044e\u0447\u0435\u0439, \u0434\u0440\u0443\u0433\u0438\u043c \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439).<\/p>\n<p>\u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e, \u0434\u0430\u0436\u0435 \u043d\u0435 \u043c\u0435\u043d\u044f\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438, \u0432\u043c\u0435\u0441\u0442\u043e <a href=\"https:\/\/cppreference.com\/w\/cpp\/container\/vector.html\" rel=\"noopener noreferrer nofollow\"><code>std::vector<\/code><\/a> \u043c\u044b \u043c\u043e\u0433\u043b\u0438 \u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <a href=\"https:\/\/cppreference.com\/w\/cpp\/container\/deque.html\" rel=\"noopener noreferrer nofollow\"><code>std::deque<\/code><\/a>. \u0412 \u043e\u0431\u0449\u0435\u043c, \u043b\u044e\u0431\u043e\u0439 <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/named_req\/SequenceContainer\" rel=\"noopener noreferrer nofollow\"><strong>\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439<\/strong><\/a> \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440. \u0418\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043b\u043e\u0441\u043a\u0438\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0438 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430\u043c\u0438: \u0440\u0430\u0437\u043d\u044b\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c \u043c\u043e\u0433\u0443\u0442 \u0438\u043c\u0435\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u0435 \u043f\u043b\u044e\u0441\u044b \u0438 \u043c\u0438\u043d\u0443\u0441\u044b, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435\u0442 \u043f\u0440\u0438\u0447\u0438\u043d \u0436\u0435\u0441\u0442\u043a\u043e \u0437\u0430\u0432\u044f\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0438\u0437 \u043d\u0438\u0445. \u0418 \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438\u0445 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0432\u043e\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"cpp\">template&lt;     class Key,     class Compare = std::less&lt;Key&gt;,     class KeyContainer = std::vector&lt;Key&gt; \/\/ \u041a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0434\u043b\u044f \u043a\u043b\u044e\u0447\u0435\u0439 &gt; class flat_set; \/\/ \u0422\u043e\u0447\u043d\u043e \u0442\u0430\u043a\u043e\u0435 \u0436\u0435 \u0434\u043b\u044f flat_multiset  template&lt;     class Key,     class T,     class Compare = std::less&lt;Key&gt;,     class KeyContainer = std::vector&lt;Key&gt;, \/\/ \u041a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0434\u043b\u044f \u043a\u043b\u044e\u0447\u0435\u0439     class MappedContainer = std::vector&lt;T&gt; \/\/ \u041a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0434\u043b\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 &gt; class flat_map; \/\/ \u0422\u043e\u0447\u043d\u043e \u0442\u0430\u043a\u043e\u0435 \u0436\u0435 \u0434\u043b\u044f flat_multimap<\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u0436\u0435 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c \u0430\u0441\u0438\u043c\u043f\u0442\u043e\u0442\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0432 \u043f\u043b\u043e\u0441\u043a\u0438\u0445 \u0438 \u043d\u0435 \u043f\u043b\u043e\u0441\u043a\u0438\u0445 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u0445, \u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td data-colwidth=\"105\" width=\"105\">\n<p align=\"left\">\n<\/td>\n<td>\n<p align=\"left\">std::unordered_(multi)set\/map<\/p>\n<\/td>\n<td data-colwidth=\"202\" width=\"202\">\n<p align=\"left\">std::(multi)set\/map<\/p>\n<\/td>\n<td>\n<p align=\"left\">std::flat_(multi)set\/map<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"105\" width=\"105\">\n<p align=\"left\">insert(value)<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0412 \u0441\u0440\u0435\u0434\u043d\u0435\u043c <\/p>\n<\/td>\n<td data-colwidth=\"202\" width=\"202\">\n<p align=\"left\">\n<\/td>\n<td>\n<p align=\"left\">\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"105\" width=\"105\">\n<p align=\"left\">erase(value)<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0412 \u0441\u0440\u0435\u0434\u043d\u0435\u043c <\/p>\n<\/td>\n<td data-colwidth=\"202\" width=\"202\">\n<p align=\"left\">\n<\/td>\n<td>\n<p align=\"left\">\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"105\" width=\"105\">\n<p align=\"left\">find(value)<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0412 \u0441\u0440\u0435\u0434\u043d\u0435\u043c <\/p>\n<\/td>\n<td data-colwidth=\"202\" width=\"202\">\n<p align=\"left\">\n<\/td>\n<td>\n<p align=\"left\">\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435 \u043a \u0442\u0430\u0431\u043b\u0438\u0446\u0435<\/summary>\n<div class=\"spoiler__content\">\n<p>\u0412 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0432\u044b\u0448\u0435, \u0434\u043b\u044f \u043f\u043e\u043b\u043d\u043e\u0442\u044b \u043a\u0430\u0440\u0442\u0438\u043d\u044b, \u0431\u044b\u043b\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0432\u0441\u0435\u0445 \u0438\u043c\u0435\u044e\u0449\u0438\u0445\u0441\u044f \u0432 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435 \u0430\u0441\u0441\u043e\u0446\u0438\u0430\u0442\u0438\u0432\u043d\u044b\u0445 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432.<\/p>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e \u0434\u0430\u043b\u044c\u0448\u0435 \u0432 \u0442\u0435\u043a\u0441\u0442\u0435, \u0433\u043b\u0430\u0432\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0431\u0443\u0434\u0443\u0442 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043b\u0438\u0448\u044c \u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0435\u043d\u043d\u044b\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b: <code>std::(multi)set\/map<\/code> \u0438 \u043d\u043e\u0432\u044b\u0435 \u043f\u043b\u043e\u0441\u043a\u0438\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b (\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0442\u0430\u043a\u0436\u0435 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0435\u043d\u043d\u044b\u043c\u0438) <code>std::flat_(multi)set\/map<\/code>.<\/p>\n<p>\u041e \u043d\u0435\u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0435\u043d\u043d\u044b\u0445 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u0445 \u2014 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u0445, \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u0445\u044d\u0448-\u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0445, \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c\u0441\u044f \u043d\u0435 \u0431\u0443\u0434\u0435\u0442, \u0442\u0430\u043a \u043a\u0430\u043a \u043d\u0435\u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0435\u043d\u043d\u044b\u0435 \u0438 \u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0435\u043d\u043d\u044b\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u2014 \u0440\u0430\u0437\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044f \u044f\u0433\u043e\u0434\u044b. \u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u0435\u043d \u043f\u043e\u0440\u044f\u0434\u043e\u043a, \u0442\u043e \u0432\u0430\u043c, \u0437\u0430 \u043e\u0447\u0435\u043d\u044c \u0440\u0435\u0434\u043a\u0438\u043c\u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f\u043c\u0438 (\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u043c\u0435\u0447\u0435\u043d\u044b \u0432 \u0437\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438), \u0438 \u043d\u0435 \u043d\u0443\u0436\u043d\u044b \u043f\u043b\u043e\u0441\u043a\u0438\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u2014 \u0445\u044d\u0448-\u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0432\u043e \u0432\u0441\u0451\u043c \u0431\u0443\u0434\u0443\u0442 \u0431\u044b\u0441\u0442\u0440\u0435\u0439.<\/p>\n<\/div>\n<\/details>\n<p>\u0410\u0441\u0438\u043c\u043f\u0442\u043e\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b, \u043c\u044b \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0432\u044b\u0438\u0433\u0440\u044b\u0432\u0430\u0435\u043c. \u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435, \u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441 <code>(multi)set<\/code> \u0438 <code>(multi)map<\/code> \u00ab\u043f\u043b\u043e\u0441\u043a\u0430\u044f\u00bb \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0438\u043c\u0435\u0435\u0442 \u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043b\u044e\u0441\u044b: <strong>\u0431\u043e\u043b\u0435\u0435 \u0431\u044b\u0441\u0442\u0440\u0443\u044e \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u044e, \u043c\u0435\u043d\u044c\u0448\u0435\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435 \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u043b\u0443\u0447\u0448\u0443\u044e \u043a\u044d\u0448-\u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c<\/strong>.<\/p>\n<p>\u041d\u043e \u0432\u0437\u0430\u043c\u0435\u043d \u043d\u0430\u0441 \u043d\u0435\u043c\u0438\u043d\u0443\u0435\u043c\u043e \u0436\u0434\u0443\u0442 <strong>\u043c\u0435\u043d\u0435\u0435 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u044b\u0435 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u044b<\/strong>, \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u044b\u0435 \u0438\u043d\u0432\u0430\u043b\u0438\u0434\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043b\u044e\u0431\u043e\u0439 \u0432\u0441\u0442\u0430\u0432\u043a\u0435 \u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0438; <strong>\u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043d\u0435-\u043a\u043e\u043f\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u0438 \u043d\u0435-\u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0435\u043c\u044b\u0445 \u0442\u0438\u043f\u043e\u0432<\/strong>; <strong>\u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u0430\u0431\u044b\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439<\/strong> (\u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u0437\u0430\u0449\u0438\u0442\u0438\u0442 \u043d\u0430\u0441 \u043e\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439 \u0432 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430\u0445 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\/\u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u043f\u0440\u0438 \u0441\u0434\u0432\u0438\u0433\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u0445\u043e\u0434\u0435 \u0432\u0441\u0442\u0430\u0432\u043a\u0438\/\u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f) \u0438 <strong>\u0431\u043e\u043b\u0435\u0435 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u044b\u0435 \u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f <\/strong>(\u043c\u0430\u043b\u043e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u043e\u0442\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0441\u0442\u044c, \u0442\u0430\u043a \u0432\u0435\u0434\u044c \u043f\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u0439 \u0432\u0441\u0442\u0430\u0432\u043a\u0435 \u0432 \u043d\u0430\u0448 \u0432\u0435\u043a\u0442\u043e\u0440 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0434\u0432\u0438\u0433\u0430\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b)<\/p>\n<p>\u0411\u043e\u043b\u0435\u0435 \u0441\u043f\u043e\u0440\u043d\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441: <strong>\u043f\u043e\u043b\u0443\u0447\u0438\u043c \u043b\u0438 \u043c\u044b \u0431\u043e\u043b\u0435\u0435 \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u043f\u043e\u0438\u0441\u043a?<\/strong> (\u0435\u0433\u043e \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u2014\u043a\u0430\u043a \u0432 \u043f\u043b\u043e\u0441\u043a\u0438\u0445, \u0442\u0430\u043a \u0438 \u043d\u0435 \u0432 \u043f\u043b\u043e\u0441\u043a\u0438\u0445 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u0445) \u041e\u0434\u0438\u043d \u0438\u0437 \u043a\u043b\u0430\u0441\u0441\u0438\u043a\u043e\u0432 \u0421++, <a href=\"https:\/\/lafstern.org\/matt\/\" rel=\"noopener noreferrer nofollow\">Matt Austern<\/a>, \u0432 <a href=\"http:\/\/lafstern.org\/matt\/col1.pdf\" rel=\"noopener noreferrer nofollow\">\u0441\u0432\u043e\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435<\/a> (2000 \u0433\u043e\u0434) \u0437\u0430\u044f\u0432\u043b\u044f\u0435\u0442, \u0447\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043c:<\/p>\n<blockquote>\n<p><em>Both std::lower_bound and set::find take time proportional to log N, but the constants of proportionality are very different. Using g++ (&#8230;) it takes X seconds to perform a million lookups in a sorted vector&lt;double&gt; of a million elements, and almost twice as long (&#8230;) using a set. Moreover, the set uses almost three times as much memory (48 million bytes) as the vector (16.8 million).<\/em><\/p>\n<\/blockquote>\n<p>\u041d\u043e <a href=\"https:\/\/stackoverflow.com\/a\/25027750\" rel=\"noopener noreferrer nofollow\">\u0431\u043e\u043b\u0435\u0435 \u043d\u043e\u0432\u044b\u0435 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0438<\/a> (2014 \u0433\u043e\u0434; \u0432\u043f\u0440\u043e\u0447\u0435\u043c, \u043d\u0430 \u043c\u0435\u043d\u044c\u0448\u0438\u0445 \u043e\u0431\u044a\u0435\u043c\u0430\u0445 \u0434\u0430\u043d\u043d\u044b\u0445) \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0435 (<a href=\"https:\/\/live.boost.org\/doc\/libs\/1_88_0\/doc\/html\/boost_container_header_reference.html#doxygen.boost_container_header_reference.flat__map_8hpp\" rel=\"noopener noreferrer nofollow\"><code>boost::container::flat_map<\/code><\/a>, \u0438\u0441\u043a\u043b\u044e\u0447\u0430\u044f \u043e\u0434\u0438\u043d \u043d\u044e\u0430\u043d\u0441, \u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u0441\u043a\u0430\u0437\u0430\u043d\u043e \u0447\u0443\u0442\u044c \u043f\u043e\u0437\u0436\u0435, \u0438\u0434\u0435\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438 \u0443\u0441\u0442\u0440\u043e\u0435\u043d \u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/container\/flat_map.html\" rel=\"noopener noreferrer nofollow\"><code>std::flat_map<\/code><\/a>):<\/p>\n<figure class=\"full-width\"><\/figure>\n<figure class=\"full-width\"><\/figure>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e, \u043e\u0441\u0442\u0430\u0432\u0438\u043c \u044d\u0442\u043e\u0442 \u0432\u043e\u043f\u0440\u043e\u0441 \u043d\u0430 \u043f\u043e\u0442\u043e\u043c. \u0410 \u0441\u0435\u0439\u0447\u0430\u0441, \u0441 \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435\u043c, \u0437\u0430\u0447\u0435\u043c \u043d\u0430\u043c \u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435 \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u044d\u0442\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b, \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0432\u0441\u0435\u0445 \u044d\u0442\u0438\u0445 \u043d\u043e\u0432\u044b\u0445 \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u043e\u0432.<\/p>\n<h2>\u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441<\/h2>\n<p>\u041a \u0441\u0447\u0430\u0441\u0442\u044c\u044e, \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/container\/flat_set.html\" rel=\"noopener noreferrer nofollow\"><code>flat_set<\/code><\/a>, <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/container\/flat_multiset.html\" rel=\"noopener noreferrer nofollow\"><code>flat_multiset<\/code><\/a>, <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/container\/flat_map.html\" rel=\"noopener noreferrer nofollow\"><code>flat_map<\/code><\/a> \u0438 <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/container\/flat_multimap.html\" rel=\"noopener noreferrer nofollow\"><code>flat_multimap<\/code><\/a> \u0437\u0430\u0434\u0443\u043c\u044b\u0432\u0430\u043b\u0441\u044f \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u043d\u0430 \u043d\u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u0437\u044f\u0442\u044c \u0438 \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0438\u0445 \u043d\u0435 \u00ab\u043f\u043b\u043e\u0441\u043a\u0438\u0435\u00bb \u0430\u043d\u0430\u043b\u043e\u0433\u0438 (\u0442\u043e \u0435\u0441\u0442\u044c, \u0434\u0440\u0443\u0433\u0438\u0435 \u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0435\u043d\u043d\u044b\u0435 \u0430\u0441\u0441\u043e\u0446\u0438\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u2014 <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/container\/set.html\" rel=\"noopener noreferrer nofollow\"><code>std::set<\/code><\/a>, <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/container\/map.html\" rel=\"noopener noreferrer nofollow\"><code>std::map<\/code><\/a> \u0438 \u0438\u0436\u0435 \u0441 \u043d\u0438\u043c\u0438), \u0442\u0430\u043a \u0447\u0442\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b \u043f\u043b\u043e\u0441\u043a\u0438\u0445 \u0438 \u043d\u0435 \u043f\u043b\u043e\u0441\u043a\u0438\u0445 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u044e\u0442.<\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u043e\u0441\u0442\u0435\u043d\u044c\u043a\u0438\u0439 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u0441 <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/container\/set.html\" rel=\"noopener noreferrer nofollow\">\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b std::set \u043d\u0430 cppreference<\/a> \u0431\u0435\u0437 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f (\u0438 \u0432\u044b\u0432\u043e\u0434, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0431\u0443\u0434\u0435\u0442 \u0442\u0435\u043c \u0436\u0435 \u0441\u0430\u043c\u044b\u043c), \u0435\u0441\u043b\u0438 \u0432\u0441\u0435 \u0432\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/container\/set.html\" rel=\"noopener noreferrer nofollow\"><code>std::set<\/code><\/a> \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0430 <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/container\/flat_set.html\" rel=\"noopener noreferrer nofollow\"><code>std::flat_set<\/code><\/a> (<a href=\"https:\/\/godbolt.org\/z\/P6GbxEzc9\" rel=\"noopener noreferrer nofollow\">godbolt<\/a>).<\/p>\n<details class=\"spoiler\">\n<summary>\u0422\u043e\u0442 \u0441\u0430\u043c\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 (\u0432 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u0435)<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"cpp\">#include &lt;algorithm&gt; #include &lt;iomanip&gt; #include &lt;iostream&gt; #include &lt;iterator&gt; #include &lt;set&gt; #include &lt;string_view&gt;   template&lt;typename T&gt; std::ostream&amp; operator&lt;&lt;(std::ostream&amp; out, const std::set&lt;T&gt;&amp; set) {     if (set.empty())         return out &lt;&lt; \"{}\";     out &lt;&lt; \"{ \" &lt;&lt; *set.begin();     std::for_each(std::next(set.begin()), set.end(), [&amp;out](const T&amp; element)     {         out &lt;&lt; \", \" &lt;&lt; element;     });     return out &lt;&lt; \" }\"; }   int main() {     std::set&lt;int&gt; set{1, 5, 3};     std::cout &lt;&lt; set &lt;&lt; '\\n';       set.insert(2);     std::cout &lt;&lt; set &lt;&lt; '\\n';       set.erase(1);     std::cout &lt;&lt; set &lt;&lt; \"\\n\\n\";       std::set&lt;int&gt; keys{3, 4};     for (int key : keys)     {         if (set.contains(key))             std::cout &lt;&lt; set &lt;&lt; \" does contain \" &lt;&lt; key &lt;&lt; '\\n';         else             std::cout &lt;&lt; set &lt;&lt; \" doesn't contain \" &lt;&lt; key &lt;&lt; '\\n';     }     std::cout &lt;&lt; '\\n';       std::string_view word = \"element\";     std::set&lt;char&gt; characters(word.begin(), word.end());     std::cout &lt;&lt; \"There are \" &lt;&lt; characters.size() &lt;&lt; \" unique characters in \" &lt;&lt; std::quoted(word) &lt;&lt; \":\\n\" &lt;&lt; characters &lt;&lt; '\\n'; }<\/code><\/pre>\n<\/div>\n<\/details>\n<p>\u0418 \u0442\u043e\u0447\u043d\u043e \u0442\u0430\u043a \u0436\u0435 \u0432 \u043b\u044e\u0431\u043e\u043c \u043a\u043e\u0434\u0435 \u0432\u0441\u0435 \u0432\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/container\/map.html\" rel=\"noopener noreferrer nofollow\"><code>std::map<\/code><\/a> \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0430 <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/container\/flat_map.html\" rel=\"noopener noreferrer nofollow\"><code>std::flat_map<\/code><\/a> \u0438 \u0432\u0441\u0451 \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u0422\u0430\u043a \u0436\u0435 \u0432\u043e\u0437\u044c\u043c\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440 \u0441 <a href=\"\/home\/eoanermine\/%D0%A1%D0%B8%D0%B4%D0%BE%D1%80%D1%83%D0%BA%20%D0%94%D0%B0%D0%BD%D0%B8%D0%BB%20%D0%92%D0%B0%D0%B4%D0%B8%D0%BC%D0%BE%D0%B2%D0%B8%D1%87,%20%D0%9B%D0%B0%D0%B11.zip\" rel=\"noopener noreferrer nofollow\">\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043d\u0430 cppreference<\/a> (<a href=\"https:\/\/godbolt.org\/z\/TM6j54Y3q\" rel=\"noopener noreferrer nofollow\">godbolt<\/a>).<\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0440 (\u043f\u043e\u0447\u0442\u0438 \u0432 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u0435)<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"cpp\">#include &lt;iostream&gt; #include &lt;map&gt; #include &lt;string&gt; #include &lt;string_view&gt;   void print_map(std::string_view comment, const std::map&lt;std::string, int&gt;&amp; m) {     std::cout &lt;&lt; comment;     \/\/ Iterate using C++17 facilities     for (const auto&amp; [key, value] : m)         std::cout &lt;&lt; '[' &lt;&lt; key &lt;&lt; \"] = \" &lt;&lt; value &lt;&lt; \"; \";     std::cout &lt;&lt; '\\n'; }   int main() {     \/\/ Create a map of three (string, int) pairs     std::map&lt;std::string, int&gt; m{{\"CPU\", 10}, {\"GPU\", 15}, {\"RAM\", 20}};       print_map(\"1) Initial map: \", m);       m[\"CPU\"] = 25; \/\/ update an existing value     m[\"SSD\"] = 30; \/\/ insert a new value     print_map(\"2) Updated map: \", m);       \/\/ Using operator[] with non-existent key always performs an insert     std::cout &lt;&lt; \"3) m[UPS] = \" &lt;&lt; m[\"UPS\"] &lt;&lt; '\\n';     print_map(\"4) Updated map: \", m);       m.erase(\"GPU\");     print_map(\"5) After erase: \", m);       std::erase_if(m, [](const auto&amp; pair){ return std::get&lt;1&gt;(pair) &gt; 25; });     print_map(\"6) After erase: \", m);     std::cout &lt;&lt; \"7) m.size() = \" &lt;&lt; m.size() &lt;&lt; '\\n';       m.clear();     std::cout &lt;&lt; std::boolalpha &lt;&lt; \"8) Map is empty: \" &lt;&lt; m.empty() &lt;&lt; '\\n'; } <\/code><\/pre>\n<p>\u041f\u043e\u0447\u0435\u043c\u0443 \u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u00ab\u043f\u043e\u0447\u0442\u0438\u00bb: \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u044d\u0442\u043e \u043d\u0435 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u0434 \u0441 cppreference. \u042f \u0432\u043d\u0435\u0441 \u0432 \u043d\u0435\u0433\u043e \u043f\u0440\u0430\u0432\u043a\u0443: \u043f\u043e\u043c\u0435\u043d\u044f\u043b \u0441\u0442\u0440\u043e\u043a\u0443 \u211633. \u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0432 \u043d\u0435\u0439 \u0431\u044b\u043b \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 <code>pair.second &gt; 25<\/code>, \u0430 \u043d\u0435 <code>std::get&lt;1&gt;(pair) &gt; 25<\/code>. \u041c\u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0438\u0437-\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 (\u043a\u0430\u043a gcc, \u0442\u0430\u043a \u0438 clang) \u0441\u0442\u0430\u043b \u0440\u0443\u0433\u0430\u0442\u044c\u0441\u044f, \u0447\u0442\u043e <code>pair<\/code> (\u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u043b\u044f\u043c\u0431\u0434\u0430-\u0444\u0443\u043d\u043a\u0446\u0438\u0438) \u044d\u0442\u043e <code>std::tuple<\/code>, \u0430 \u043d\u0435 <code>std::pair<\/code>. \u0424\u0438\u0447\u0430 \u044d\u0442\u043e \u0438\u043b\u0438 \u0431\u0430\u0433 \u2014 \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u043e. \u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0442\u0438\u043f <code>const_reference<\/code> \u0443 <code>std::flat_map<\/code> \u043a\u0430\u043a <code>pair&lt;const key_type&amp;, mapped_type&amp;&gt;<\/code>, \u0430 \u043d\u0435 <code>tuple<\/code> [<a href=\"https:\/\/eel.is\/c++draft\/flat.multimap.defn\" rel=\"noopener noreferrer nofollow\">flat.multimap.defn<\/a>]<\/p>\n<p>P.S. \u0412\u043f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0438 \u0432\u044b\u044f\u0441\u043d\u0438\u043b\u043e\u0441\u044c, \u0447\u0442\u043e, \u043f\u043e \u0432\u0441\u0435\u0439 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438, \u044d\u0442\u043e \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 libstdc++. \u041f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 libc++ \u043e\u0448\u0438\u0431\u043e\u043a \u043d\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442. \u0421\u043c. <a href=\"https:\/\/godbolt.org\/z\/qP11o4osq\" rel=\"noopener noreferrer nofollow\">godbolt<\/a> \u0438 \u043e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u0435 \u0432 <a href=\"https:\/\/t.me\/ProCxx\/700236\" rel=\"noopener noreferrer nofollow\">@procxx (Telegram)<\/a><\/p>\n<\/div>\n<\/details>\n<p>\u0412 \u0447\u0451\u043c \u0436\u0435 <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/container\/flat_set.html\" rel=\"noopener noreferrer nofollow\"><code>flat_set<\/code><\/a> \u0432\u0441\u0435-\u0442\u0430\u043a\u0438 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/container\/set.html\" rel=\"noopener noreferrer nofollow\"><code>set<\/code><\/a>:<\/p>\n<ul>\n<li>\n<p>\u0423 <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/container\/flat_set.html\" rel=\"noopener noreferrer nofollow\"><code>flat_set<\/code><\/a> <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/container\/flat_set\/flat_set.html\" rel=\"noopener noreferrer nofollow\">\u0435\u0441\u0442\u044c \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u044b<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0442 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440-\u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043a\u0430\u043a \u043e\u0442\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d, \u0442\u0430\u043a \u0438 \u043d\u0435\u0442 (\u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/container\/flat_set.html\" rel=\"noopener noreferrer nofollow\"><code>flat_set<\/code><\/a> \u043e\u0442\u0441\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u0442 \u0435\u0433\u043e \u0438 \u0434\u0430\u0436\u0435 \u0443\u0434\u0430\u043b\u0438\u0442 \u0434\u0443\u0431\u043b\u0438\u043a\u0430\u0442\u044b \u0437\u0430 \u0432\u0430\u0441). \u041f\u0440\u0438\u043c\u0435\u0440 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u043f\u043e\u0434 \u0441\u043f\u043e\u0439\u043b\u0435\u0440\u043e\u043c \u0438 \u043d\u0430 <a href=\"https:\/\/godbolt.org\/z\/rbxrh3E95\" rel=\"noopener noreferrer nofollow\">godbolt<\/a>.<\/p>\n<\/li>\n<\/ul>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0440<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"cpp\">#include &lt;vector&gt; #include &lt;fla<\/code><\/pre>\n<\/div>\n<\/details>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-462655","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/462655","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=462655"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/462655\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=462655"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=462655"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=462655"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}