<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>教程 on 红石的个人博客</title><link>https://qwqdhs.com/categories/%E6%95%99%E7%A8%8B/</link><description>Recent content from 红石的个人博客</description><generator>Hugo</generator><language>zh-cn</language><managingEditor>qwqdhs@outlook.com (qwq的红石/屿寻sama)</managingEditor><webMaster>qwqdhs@outlook.com (qwq的红石/屿寻sama)</webMaster><copyright>本博客所有文章除特别声明外，均采用 BY-NC-SA 许可协议。转载请注明出处！</copyright><lastBuildDate>Tue, 21 Jul 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://qwqdhs.com/categories/%E6%95%99%E7%A8%8B/index.xml" rel="self" type="application/rss+xml"/><item><title>一些STL的教程（施工中）</title><link>https://qwqdhs.com/posts/messy/</link><pubDate>Tue, 21 Jul 2026 00:00:00 +0000</pubDate><author>qwqdhs@outlook.com (qwq的红石/屿寻sama)</author><guid>https://qwqdhs.com/posts/messy/</guid><description>
<![CDATA[<h1>一些STL的教程（施工中）</h1><p>作者：qwq的红石/屿寻sama（qwqdhs@outlook.com）</p>
        
          <h2 id="输出数组最大最小值">
<a class="header-anchor" href="#%e8%be%93%e5%87%ba%e6%95%b0%e7%bb%84%e6%9c%80%e5%a4%a7%e6%9c%80%e5%b0%8f%e5%80%bc"></a>
输出数组最大/最小值
</h2><h3 id="max_element和min_element">
<a class="header-anchor" href="#max_element%e5%92%8cmin_element"></a>
max_element和min_element
</h3><ul>
<li><strong>介绍</strong> ：min_element/max_element函数是C++标准模板库（STL）中的一个函数，用于查找指定范围内的最小元素。它返回一个指向范围内最小元素的迭代器</li>
<li><strong>作用</strong>：作用：返回容器中最小值和最大值</li>
<li><strong>头文件</strong>：<strong>algorithm</strong></li>
<li><strong>例</strong>：
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-cpp" data-lang="cpp"><span class="line"><span class="cl"><span class="kt">int</span> <span class="n">a</span><span class="p">[</span><span class="mi">5</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="mi">5</span><span class="p">};</span>
</span></span><span class="line"><span class="cl"><span class="n">cout</span><span class="o">&lt;&lt;*</span><span class="n">max_element</span><span class="p">(</span><span class="n">begin</span><span class="p">(</span><span class="n">a</span><span class="p">),</span><span class="n">end</span><span class="p">(</span><span class="n">a</span><span class="p">));</span>
</span></span><span class="line"><span class="cl"><span class="c1">//输出5
</span></span></span><span class="line"><span class="cl"><span class="n">cout</span><span class="o">&lt;&lt;*</span><span class="n">min_element</span><span class="p">(</span><span class="n">begin</span><span class="p">(</span><span class="n">a</span><span class="p">),</span><span class="n">end</span><span class="p">(</span><span class="n">a</span><span class="p">));</span>
</span></span><span class="line"><span class="cl"><span class="c1">//输出1
</span></span></span></code></pre></td></tr></table>
</div>
</div></li>
<li><strong>备注</strong>：从C++11标准起，begin(a)和 end(a)，也可以写成a和a+5</li>
</ul>
<h2 id="保留x位小数">
<a class="header-anchor" href="#%e4%bf%9d%e7%95%99x%e4%bd%8d%e5%b0%8f%e6%95%b0"></a>
保留x位小数
</h2><ul>
<li><strong>头文件</strong>：iomanip</li>
</ul>
<h3 id="fixed和setprecision">
<a class="header-anchor" href="#fixed%e5%92%8csetprecision"></a>
fixed和setprecision()
</h3><h4 id="setprecision">
<a class="header-anchor" href="#setprecision"></a>
setprecision()
</h4><ul>
<li><strong>作用</strong>：控制浮点数输出格式，设置精度，当<strong>与fixed一起使用</strong>时，表示小数点后保留n位，如果<strong>不搭配fixed使用</strong>，则表示有效数字为n位</li>
</ul>
<h4 id="fixed">
<a class="header-anchor" href="#fixed"></a>
fixed
</h4><ul>
<li><strong>作用</strong>：强制以固定小数点表示法显示浮点数，<strong>不使用</strong>科学计数法表示，比如1234.5678就会显示为1234.5678，而不是1.2345678e+03</li>
<li>
<h4 id="setprecision和fixed连用">
<a class="header-anchor" href="#setprecision%e5%92%8cfixed%e8%bf%9e%e7%94%a8"></a>
setprecision和fixed连用：
</h4><div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-cpp" data-lang="cpp"><span class="line"><span class="cl"><span class="n">cout</span><span class="o">&lt;&lt;</span><span class="n">fixed</span><span class="o">&lt;&lt;</span><span class="n">setprecision</span><span class="p">(</span><span class="n">x</span><span class="p">)</span><span class="o">&lt;&lt;</span><span class="n">a</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="c1">//x表示保留几位
</span></span></span></code></pre></td></tr></table>
</div>
</div></li>
</ul>
<h2 id="最大公约数">
<a class="header-anchor" href="#%e6%9c%80%e5%a4%a7%e5%85%ac%e7%ba%a6%e6%95%b0"></a>
最大公约数
</h2><ul>
<li><strong>头文件</strong>： numeric</li>
<li><strong>介绍</strong>：如果a和b都为零，则返回零，否则返回|a|和|b|的最大公约数</li>
</ul>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-cpp" data-lang="cpp"><span class="line"><span class="cl"><span class="c1">//需要C++17标准
</span></span></span><span class="line"><span class="cl"><span class="c1">//需要两者都是int类型
</span></span></span><span class="line"><span class="cl"><span class="n">gcd</span><span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="n">b</span><span class="p">)</span>
</span></span></code></pre></td></tr></table>
</div>
</div><ul>
<li><strong>补充</strong>：C++17也提供了 <code>lcm(a,b)</code> 求最小公倍数</li>
</ul>
<h2 id="三个数比大小">
<a class="header-anchor" href="#%e4%b8%89%e4%b8%aa%e6%95%b0%e6%af%94%e5%a4%a7%e5%b0%8f"></a>
三个数比大小
</h2><div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-cpp" data-lang="cpp"><span class="line"><span class="cl"><span class="c1">//C++11标准开始支持三个数了
</span></span></span><span class="line"><span class="cl"><span class="n">max</span><span class="p">({</span><span class="n">a</span><span class="p">,</span><span class="n">b</span><span class="p">,</span><span class="n">c</span><span class="p">});</span>
</span></span><span class="line"><span class="cl"><span class="n">min</span><span class="p">({</span><span class="n">a</span><span class="p">,</span><span class="n">b</span><span class="p">,</span><span class="n">c</span><span class="p">});</span>
</span></span></code></pre></td></tr></table>
</div>
</div><h2 id="vector去重">
<a class="header-anchor" href="#vector%e5%8e%bb%e9%87%8d"></a>
vector去重
</h2><div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-cpp" data-lang="cpp"><span class="line"><span class="cl"><span class="n">sort</span><span class="p">(</span><span class="n">a</span><span class="p">.</span><span class="n">begin</span><span class="p">(),</span> <span class="n">a</span><span class="p">.</span><span class="n">end</span><span class="p">());</span>  <span class="c1">//需要事先排序
</span></span></span><span class="line"><span class="cl"><span class="n">a</span><span class="p">.</span><span class="n">erase</span><span class="p">(</span><span class="n">unique</span><span class="p">(</span><span class="n">a</span><span class="p">.</span><span class="n">begin</span><span class="p">(),</span><span class="n">a</span><span class="p">.</span><span class="n">end</span><span class="p">()),</span> <span class="n">a</span><span class="p">.</span><span class="n">end</span><span class="p">());</span>
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="工作原理">
<a class="header-anchor" href="#%e5%b7%a5%e4%bd%9c%e5%8e%9f%e7%90%86"></a>
工作原理
</h3><p><code>unique</code> 将相邻的重复元素移动到容器末尾，并返回去重后第一个无效元素的迭代器；<code>erase</code> 删除从该迭代器到容器末尾的所有无效元素。注意 <code>unique</code> 只移除相邻重复，所以必须先排序</p>
        
        <hr><p>本文2026-07-21首发于<a href='https://qwqdhs.com/'>红石的个人博客</a>，最后修改于2026-07-21</p>]]></description><category>教程</category></item></channel></rss>