{"id":1012,"date":"2020-05-08T16:43:00","date_gmt":"2020-05-08T08:43:00","guid":{"rendered":"https:\/\/beijian99.top\/?p=1012"},"modified":"2025-05-10T09:08:40","modified_gmt":"2025-05-10T01:08:40","slug":"c-stl","status":"publish","type":"post","link":"https:\/\/beijian99.top\/?p=1012","title":{"rendered":"C++ STL"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"640\" src=\"https:\/\/beijian99.top\/wp-content\/uploads\/2020\/05\/image-1024x640.png\" alt=\"\" class=\"wp-image-1023\" srcset=\"https:\/\/beijian99.top\/wp-content\/uploads\/2020\/05\/image-1024x640.png 1024w, https:\/\/beijian99.top\/wp-content\/uploads\/2020\/05\/image-300x188.png 300w, https:\/\/beijian99.top\/wp-content\/uploads\/2020\/05\/image-768x480.png 768w, https:\/\/beijian99.top\/wp-content\/uploads\/2020\/05\/image.png 1105w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>\u4e00\u3001\u5e38\u7528\u5bb9\u5668(\u6570\u636e\u7ed3\u6784)<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u5e8f\u5217\u5bb9\u5668<\/li>\n<\/ol>\n\n\n\n<p>vector (\u52a8\u6001\u6570\u7ec4)<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>#include &lt;vector&gt;<br>vector&lt;int&gt; v = {1, 2, 3};<br>v.push_back(4);       \/\/ \u672b\u5c3e\u6dfb\u52a0\u5143\u7d20<br>v.pop_back();         \/\/ \u5220\u9664\u672b\u5c3e\u5143\u7d20<br>v.size();             \/\/ \u5143\u7d20\u6570\u91cf<br>v[0];                 \/\/ \u8bbf\u95ee\u5143\u7d20(\u4e0d\u68c0\u67e5\u8fb9\u754c)<br>v.at(0);              \/\/ \u8bbf\u95ee\u5143\u7d20(\u68c0\u67e5\u8fb9\u754c)<br>v.insert(v.begin()+1, 5); \/\/ \u5728\u6307\u5b9a\u4f4d\u7f6e\u63d2\u5165<br>v.erase(v.begin()+1);     \/\/ \u5220\u9664\u6307\u5b9a\u4f4d\u7f6e\u5143\u7d20<\/code><\/pre>\n\n\n\n<p>deque (\u53cc\u7aef\u961f\u5217)<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>#include &lt;deque&gt;<br>deque&lt;int&gt; d = {1, 2, 3};<br>d.push_front(0);      \/\/ \u5934\u90e8\u63d2\u5165<br>d.push_back(4);       \/\/ \u5c3e\u90e8\u63d2\u5165<br>d.pop_front();        \/\/ \u5934\u90e8\u5220\u9664<br>d.pop_back();         \/\/ \u5c3e\u90e8\u5220\u9664<\/code><\/pre>\n\n\n\n<p>list (\u53cc\u5411\u94fe\u8868)<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>#include &lt;list&gt;<br>list&lt;int&gt; l = {1, 2, 3};<br>l.push_front(0);      \/\/ \u5934\u90e8\u63d2\u5165<br>l.push_back(4);       \/\/ \u5c3e\u90e8\u63d2\u5165<br>l.pop_front();        \/\/ \u5934\u90e8\u5220\u9664<br>l.pop_back();         \/\/ \u5c3e\u90e8\u5220\u9664<br>l.insert(++l.begin(), 5); \/\/ \u5728\u7b2c\u4e8c\u4e2a\u4f4d\u7f6e\u63d2\u5165<br>l.erase(--l.end());       \/\/ \u5220\u9664\u6700\u540e\u4e00\u4e2a\u5143\u7d20<\/code><\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u5173\u8054\u5bb9\u5668<\/li>\n<\/ol>\n\n\n\n<p>set (\u6709\u5e8f\u96c6\u5408)<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>#include &lt;set&gt;<br>set&lt;int&gt; s = {3, 1, 2};<br>s.insert(4);         \/\/ \u63d2\u5165\u5143\u7d20<br>s.erase(2);          \/\/ \u5220\u9664\u5143\u7d20<br>s.count(3);          \/\/ \u68c0\u67e5\u662f\u5426\u5b58\u5728(\u8fd4\u56de0\u62161)<br>s.find(3);           \/\/ \u8fd4\u56de\u8fed\u4ee3\u5668\uff0c\u627e\u4e0d\u5230\u8fd4\u56des.end()<\/code><\/pre>\n\n\n\n<p>map (\u6709\u5e8f\u952e\u503c\u5bf9)<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>#include &lt;map&gt;<br>map&lt;string, int&gt; m = {{\"Alice\", 25}, {\"Bob\", 30}};<br>m[\"Charlie\"] = 28;   \/\/ \u63d2\u5165\u6216\u4fee\u6539<br>m.erase(\"Bob\");       \/\/ \u5220\u9664<br>m.count(\"Alice\");     \/\/ \u68c0\u67e5\u952e\u662f\u5426\u5b58\u5728<br>m.find(\"Alice\");      \/\/ \u8fd4\u56de\u8fed\u4ee3\u5668<br>for(auto&amp; p : m) {<br>    cout &lt;&lt; p.first &lt;&lt; \": \" &lt;&lt; p.second &lt;&lt; endl;<br>}<\/code><\/pre>\n\n\n\n<p>unordered_set\/unordered_map (\u54c8\u5e0c\u8868\u5b9e\u73b0)<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>#include &lt;unordered_set&gt;<br>#include &lt;unordered_map&gt;<br>unordered_set&lt;int&gt; us = {3, 1, 2};<br>unordered_map&lt;string, int&gt; um = {{\"Alice\", 25}, {\"Bob\", 30}};<br>\/\/ \u63a5\u53e3\u4e0eset\/map\u7c7b\u4f3c\uff0c\u4f46\u65e0\u5e8f<\/code><\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>\u5bb9\u5668\u9002\u914d\u5668<\/li>\n<\/ol>\n\n\n\n<p>stack (\u6808)<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>#include &lt;stack&gt;<br>stack&lt;int&gt; s;<br>s.push(1);           \/\/ \u538b\u6808<br>s.pop();             \/\/ \u5f39\u6808(\u4e0d\u8fd4\u56de\u5143\u7d20)<br>s.top();             \/\/ \u8bbf\u95ee\u6808\u9876<br>s.empty();           \/\/ \u662f\u5426\u4e3a\u7a7a<\/code><\/pre>\n\n\n\n<p>queue (\u961f\u5217)<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>#include &lt;queue&gt;<br>queue&lt;int&gt; q;<br>q.push(1);           \/\/ \u5165\u961f<br>q.pop();             \/\/ \u51fa\u961f(\u4e0d\u8fd4\u56de\u5143\u7d20)<br>q.front();           \/\/ \u8bbf\u95ee\u961f\u9996<br>q.back();            \/\/ \u8bbf\u95ee\u961f\u5c3e<\/code><\/pre>\n\n\n\n<p>priority_queue (\u4f18\u5148\u961f\u5217)<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>#include &lt;queue&gt;<br>priority_queue&lt;int&gt; pq; \/\/ \u9ed8\u8ba4\u5927\u9876\u5806<br>pq.push(3);           \/\/ \u63d2\u5165\u5143\u7d20<br>pq.push(1);<br>pq.push(4);<br>pq.top();             \/\/ \u8bbf\u95ee\u6700\u5927\u5143\u7d20(4)<br>pq.pop();             \/\/ \u5220\u9664\u6700\u5927\u5143\u7d20<br><br>\/\/ \u5c0f\u9876\u5806<br>priority_queue&lt;int, vector&lt;int&gt;, greater&lt;int&gt;&gt; min_pq;<\/code><br>\/\/ \u81ea\u5b9a\u4e49<br>auto cmp = [](int a, int b) { return a &gt; b; }; \/\/ \u5c0f\u9876\u5806\u6bd4\u8f83\u51fd\u6570<br>priority_queue&lt;int, vector&lt;int&gt;, decltype(cmp)&gt; pq(cmp);<\/pre>\n\n\n\n<p>\u4e8c\u3001\u5e38\u7528\u7b97\u6cd5<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u6392\u5e8f\u548c\u641c\u7d22<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>#include &lt;algorithm&gt;<br>vector&lt;int&gt; v = {3, 1, 4, 2};<br><br>\/\/ \u6392\u5e8f<br>sort(v.begin(), v.end());            \/\/ \u5347\u5e8f<br>sort(v.begin(), v.end(), greater&lt;int&gt;()); \/\/ \u964d\u5e8f<br><br>\/\/ \u4e8c\u5206\u67e5\u627e(\u8981\u6c42\u5df2\u6392\u5e8f)<br>binary_search(v.begin(), v.end(), 3); \/\/ \u8fd4\u56debool<br>auto it = lower_bound(v.begin(), v.end(), 2); \/\/ \u7b2c\u4e00\u4e2a\u4e0d\u5c0f\u4e8e2\u7684\u5143\u7d20<br>auto it = upper_bound(v.begin(), v.end(), 2); \/\/ \u7b2c\u4e00\u4e2a\u5927\u4e8e2\u7684\u5143\u7d20<\/code><\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u67e5\u627e\u7b97\u6cd5<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>vector&lt;int&gt; v = {1, 2, 3, 2, 4};<br><br>\/\/ \u7ebf\u6027\u67e5\u627e<br>auto it = find(v.begin(), v.end(), 3); \/\/ \u8fd4\u56de\u8fed\u4ee3\u5668<br><br>\/\/ \u8ba1\u6570<br>int cnt = count(v.begin(), v.end(), 2); \/\/ \u8fd4\u56de2<br><br>\/\/ \u6761\u4ef6\u8ba1\u6570<br>cnt = count_if(v.begin(), v.end(), [](int x){return x%2==0;}); \/\/ \u5076\u6570\u4e2a\u6570<\/code><\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>\u4fee\u6539\u5e8f\u5217\u7b97\u6cd5<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>vector&lt;int&gt; v = {1, 2, 3, 4};<br><br>\/\/ \u53cd\u8f6c<br>reverse(v.begin(), v.end()); \/\/ v\u53d8\u4e3a{4, 3, 2, 1}<br><br>\/\/ \u586b\u5145<br>fill(v.begin(), v.end(), 0); \/\/ \u5168\u90e8\u586b\u5145\u4e3a0<br><br>\/\/ \u53bb\u91cd(\u8981\u6c42\u5df2\u6392\u5e8f)<br>sort(v.begin(), v.end());<br>auto last = unique(v.begin(), v.end()); \/\/ \u8fd4\u56de\u53bb\u91cd\u540e\u7684\u65b0\u7ed3\u5c3e<br>v.erase(last, v.end()); \/\/ \u5220\u9664\u91cd\u590d\u5143\u7d20<br><br>\/\/ \u590d\u5236<br>vector&lt;int&gt; v2(v.size());<br>copy(v.begin(), v.end(), v2.begin());<\/code><\/pre>\n\n\n\n<ol start=\"4\" class=\"wp-block-list\">\n<li>\u6570\u503c\u7b97\u6cd5<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>#include &lt;numeric&gt;<br>vector&lt;int&gt; v = {1, 2, 3, 4};<br><br>\/\/ \u7d2f\u52a0<br>int sum = accumulate(v.begin(), v.end(), 0); \/\/ 10<br><br>\/\/ \u5185\u79ef<br>vector&lt;int&gt; v2 = {2, 3, 4, 5};<br>int product = inner_product(v.begin(), v.end(), v2.begin(), 0); \/\/ 1 * 2 + 2 * 3 + 3 * 4 + 4 * 5 = 40<br><br>\/\/ \u90e8\u5206\u548c<br>vector&lt;int&gt; partial(v.size());<br>partial_sum(v.begin(), v.end(), partial.begin()); \/\/ {1, 3, 6, 10}<\/code><\/pre>\n\n\n\n<ol start=\"5\" class=\"wp-block-list\">\n<li>\u5176\u4ed6\u5b9e\u7528\u7b97\u6cd5<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>\/\/ \u904d\u5386\u5904\u7406<br>for_each(v.begin(), v.end(), [](int&amp; x){ x *= 2; });<br><br>\/\/ \u53d8\u6362<br>vector&lt;int&gt; result(v.size());<br>transform(v.begin(), v.end(), result.begin(), [](int x){return x*x;});<br><br>\/\/ \u751f\u6210\u5e8f\u5217<br>vector&lt;int&gt; nums(5);<br>iota(nums.begin(), nums.end(), 10); \/\/ {10, 11, 12, 13, 14}<br><br>\/\/ \u968f\u673a\u6d17\u724c<br>random_shuffle(v.begin(), v.end());<br><br>\/\/ \u6700\u5927\/\u6700\u5c0f\u503c<br>auto min_it = min_element(v.begin(), v.end());<br>auto max_it = max_element(v.begin(), v.end());<\/code><\/pre>\n\n\n\n<p>\u4e09\u3001\u8fed\u4ee3\u5668<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>vector&lt;int&gt; v = {1, 2, 3, 4, 5};<br><br>\/\/ \u6b63\u5411\u8fed\u4ee3\u5668<br>for(auto it = v.begin(); it != v.end(); ++it) {<br>    cout &lt;&lt; *it &lt;&lt; \" \";<br>}<br><br>\/\/ \u53cd\u5411\u8fed\u4ee3\u5668<br>for(auto rit = v.rbegin(); rit != v.rend(); ++rit) {<br>    cout &lt;&lt; *rit &lt;&lt; \" \";<br>}<br><br>\/\/ \u5e38\u91cf\u8fed\u4ee3\u5668<br>for(auto cit = v.cbegin(); cit != v.cend(); ++cit) {<br>    \/\/ *cit = 10; \/\/ \u9519\u8bef\uff0c\u4e0d\u80fd\u4fee\u6539<br>}<\/code><\/pre>\n\n\n\n<p>\u56db\u3001\u51fd\u6570\u5bf9\u8c61\u548cLambda\u8868\u8fbe\u5f0f<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>\/\/ \u51fd\u6570\u5bf9\u8c61<br>struct Greater {<br>    bool operator()(int a, int b) const {<br>        return a &gt; b;<br>    }<br>};<br>sort(v.begin(), v.end(), Greater());<br><br>\/\/ Lambda\u8868\u8fbe\u5f0f<br>sort(v.begin(), v.end(), [](int a, int b) {<br>    return a &gt; b;<br>});<br><br>\/\/ \u5e26\u6355\u83b7\u7684Lambda<br>int threshold = 3;<br>auto count = count_if(v.begin(), v.end(), [threshold](int x) {<br>    return x &gt; threshold;<br>});<\/code><\/pre>\n\n\n\n<p>\u4e94\u3001\u5b9e\u7528\u6280\u5de7<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u4f7f\u7528auto\u7b80\u5316\u4ee3\u7801:<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>for(auto&amp; x : v) { x *= 2; }<\/code><\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u4f7f\u7528emplace\u4ee3\u66ffinsert\/push (\u907f\u514d\u4e0d\u5fc5\u8981\u7684\u62f7\u8d1d):<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>vector&lt;pair&lt;int, string&gt;&gt; v;<br>v.emplace_back(1, \"one\"); \/\/ \u76f4\u63a5\u5728\u5bb9\u5668\u4e2d\u6784\u9020<\/code><\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>\u79fb\u52a8\u8bed\u4e49\u63d0\u9ad8\u6548\u7387:<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>vector&lt;string&gt; v;<br>string s = \"data\";<br>v.push_back(move(s)); \/\/ \u79fb\u52a8\u800c\u975e\u62f7\u8d1d<\/code><\/pre>\n\n\n\n<ol start=\"4\" class=\"wp-block-list\">\n<li>\u7ed3\u6784\u5316\u7ed1\u5b9a(C++17):<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>map&lt;string, int&gt; m = {{\"Alice\", 25}, {\"Bob\", 30}};<br>for(const auto&amp; [name, age] : m) {<br>    cout &lt;&lt; name &lt;&lt; \": \" &lt;&lt; age &lt;&lt; endl;<br>}<\/code><\/pre>\n\n\n\n<ol start=\"5\" class=\"wp-block-list\">\n<li>\u4f7f\u7528make_shared\/make_unique (\u667a\u80fd\u6307\u9488):<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>auto ptr = make_shared&lt;int&gt;(42);<br>auto uptr = make_unique&lt;vector&lt;int&gt;&gt;(10, 1);<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u4e00\u3001\u5e38\u7528\u5bb9\u5668(\u6570\u636e\u7ed3\u6784) vector (\u52a8\u6001\u6570\u7ec4) #include &lt;vector&gt;vecto [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1023,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[153],"tags":[154],"class_list":["post-1012","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cpp","tag-cpp"],"_links":{"self":[{"href":"https:\/\/beijian99.top\/index.php?rest_route=\/wp\/v2\/posts\/1012","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/beijian99.top\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/beijian99.top\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/beijian99.top\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/beijian99.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1012"}],"version-history":[{"count":2,"href":"https:\/\/beijian99.top\/index.php?rest_route=\/wp\/v2\/posts\/1012\/revisions"}],"predecessor-version":[{"id":1024,"href":"https:\/\/beijian99.top\/index.php?rest_route=\/wp\/v2\/posts\/1012\/revisions\/1024"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/beijian99.top\/index.php?rest_route=\/wp\/v2\/media\/1023"}],"wp:attachment":[{"href":"https:\/\/beijian99.top\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1012"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/beijian99.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1012"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/beijian99.top\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1012"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}