|
200 | 200 |
|
201 | 201 | <p class="text-right"><small>
|
202 | 202 | 最終更新日時(UTC):
|
203 |
| - <span itemprop="datePublished" content="2024-09-24T06:32:54"> |
204 |
| - 2024年09月24日 06時32分54秒 |
| 203 | + <span itemprop="datePublished" content="2025-05-15T06:31:22"> |
| 204 | + 2025年05月15日 06時31分22秒 |
205 | 205 | </span>
|
206 | 206 | <br/>
|
207 | 207 | <span itemprop="author" itemscope itemtype="http://schema.org/Person">
|
|
225 | 225 | <div class="col-sm-12 content-body">
|
226 | 226 |
|
227 | 227 | <div class="identifier-type">function</div><div class="header"><map></div><h1 itemprop="name"><span class="namespace" title="namespace std">std::</span><span class="class" title="class map">map::</span><span class="token">at</span><span class="cpp cpp11" title="C++11で追加">(C++11)</span></h1>
|
228 |
| -<div itemprop="articleBody"><p><div class="codehilite"><pre><span></span><code><span class="n">T</span><span class="o">&</span> <span class="n">at</span><span class="p">(</span><span class="k">const</span> <span class="n">key_type</span><span class="o">&</span> <span class="n">x</span><span class="p">);</span> |
229 |
| -<span class="k">const</span> <span class="n">T</span><span class="o">&</span> <span class="n">at</span><span class="p">(</span><span class="k">const</span> <span class="n">key_type</span> <span class="o">&</span> <span class="n">x</span><span class="p">)</span> <span class="k">const</span><span class="p">;</span> |
| 228 | +<div itemprop="articleBody"><p><div class="codehilite"><pre><span></span><code><span class="n">T</span><span class="o">&</span> <span class="n">at</span><span class="p">(</span><span class="k">const</span> <span class="n">key_type</span><span class="o">&</span> <span class="n">x</span><span class="p">);</span> <span class="c1">// (1) C++11</span> |
| 229 | +<span class="k">const</span> <span class="n">T</span><span class="o">&</span> <span class="n">at</span><span class="p">(</span><span class="k">const</span> <span class="n">key_type</span> <span class="o">&</span> <span class="n">x</span><span class="p">)</span> <span class="k">const</span><span class="p">;</span> <span class="c1">// (2) C++11</span> |
| 230 | + |
| 231 | +<span class="k">template</span><span class="o"><</span><span class="k">class</span> <span class="nc">K</span><span class="o">></span> |
| 232 | +<span class="n">mapped_type</span><span class="o">&</span> <span class="n">at</span><span class="p">(</span><span class="k">const</span> <span class="n">K</span><span class="o">&</span> <span class="n">x</span><span class="p">);</span> <span class="c1">// (3) C++26</span> |
| 233 | +<span class="k">template</span><span class="o"><</span><span class="k">class</span> <span class="nc">K</span><span class="o">></span> |
| 234 | +<span class="k">const</span> <span class="n">mapped_type</span><span class="o">&</span> <span class="n">at</span><span class="p">(</span><span class="k">const</span> <span class="n">K</span><span class="o">&</span> <span class="n">x</span><span class="p">)</span> <span class="k">const</span><span class="p">;</span> <span class="c1">// (4) C++26</span> |
230 | 235 | </code></pre></div>
|
231 | 236 | </p>
|
232 | 237 | <h2>概要</h2>
|
233 | 238 | <p>指定したキーを持つ要素を取得する。<br />
|
234 |
| -要素を取り出す際にキーの存在チェックをする。</p> |
| 239 | +<code><a href="op_at.html">operator[]</a></code>と違って、要素を取り出す際にキーに対応する値がなければ<a class="cpprefjp-defined-word" data-desc="問題が発生したときに、現在実行位置を過去に通過・記録した位置に戻し、文脈情報を添えて紐づけられた処理(例外ハンドラー)を呼び出す仕組み。またはその事態">例外</a>が送出される。</p> |
| 240 | +<ul> |
| 241 | +<li>(1), (2) : クラスのテンプレートパラメータ<code>key_type</code>型のキーに対応する要素を取得する</li> |
| 242 | +<li>(3), (4) : <code>key_type</code>と比較可能な<code>K</code>型のキーに対応する要素を取得する</li> |
| 243 | +</ul> |
| 244 | +<h2><a class="cpprefjp-defined-word" data-desc="関数等の意味論を構成する要素の1つ。Constraints。関数であればオーバーロード解決に参加するための条件、それ以外であれば受け付ける型の条件">テンプレートパラメータ制約</a></h2> |
| 245 | +<ul> |
| 246 | +<li>(3), (4) : <code>key_compare::is_transparent</code> が妥当な式であること</li> |
| 247 | +</ul> |
| 248 | +<h2><a class="cpprefjp-defined-word" data-desc="関数等の意味論を構成する要素の1つ。Preconditions。関数呼び出し時に満たされていると関数が想定する条件。満たさなければ未定義の動作。契約属性の`[[expects]]`に相当">事前条件</a></h2> |
| 249 | +<ul> |
| 250 | +<li>(3), (4) : <code><a href="find.html">find</a>(x)</code>が妥当な式であり、定義された動作をすること</li> |
| 251 | +</ul> |
235 | 252 | <h2><a class="cpprefjp-defined-word" data-desc="関数呼び出し式の評価結果となるオブジェクト・値">戻り値</a></h2>
|
236 |
| -<p>キー<code>x</code>に対応する値を返す。対応する要素が存在しないときは、<code><a href="../../stdexcept.html">out_of_range</a></code><a class="cpprefjp-defined-word" data-desc="問題が発生したときに、現在実行位置を過去に通過・記録した位置に戻し、文脈情報を添えて紐づけられた処理(例外ハンドラー)を呼び出す仕組み。またはその事態">例外</a>を投げる。</p> |
| 253 | +<p>キー<code>x</code>に対応する値を返す。</p> |
237 | 254 | <h2><a class="cpprefjp-defined-word" data-desc="関数等の意味論を構成する要素の1つ。Complexity。関数が使うアルゴリズムの空間計算量・時間計算量">計算量</a></h2>
|
238 | 255 | <p>要素数に対して対数時間</p>
|
| 256 | +<h2><a class="cpprefjp-defined-word" data-desc="問題が発生したときに、現在実行位置を過去に通過・記録した位置に戻し、文脈情報を添えて紐づけられた処理(例外ハンドラー)を呼び出す仕組み。またはその事態">例外</a></h2> |
| 257 | +<ul> |
| 258 | +<li>対応する要素が存在しない場合、<code><a href="../../stdexcept.html">std::out_of_range</a></code><a class="cpprefjp-defined-word" data-desc="問題が発生したときに、現在実行位置を過去に通過・記録した位置に戻し、文脈情報を添えて紐づけられた処理(例外ハンドラー)を呼び出す仕組み。またはその事態">例外</a>を送出する</li> |
| 259 | +</ul> |
| 260 | +<h2>備考</h2> |
| 261 | +<ul> |
| 262 | +<li>(3), (4) :<ul> |
| 263 | +<li><code>is_transparent</code>は、標準ライブラリの<code><a href="../../functional/less.html">std::less</a></code>、<code><a href="../../functional/greater.html">std::greater</a></code>といった関数オブジェクトの、<code>void</code>に対する特殊化で定義される。それ以外のテンプレートパラメータで<code>is_transparent</code>が定義されないのは、互換性のためである。</li> |
| 264 | +<li>これらの<a class="cpprefjp-defined-word" data-desc="同名の関数を異なる引数・テンプレート・制約などで複数定義すること。または同名の関数の集合">オーバーロード</a>は、<code>map<string, int></code>のようなコンテナに対し、検索操作で文字列リテラルを渡した際に、キー型の一時オブジェクトが生成されるコストを減らすためにある。</li> |
| 265 | +</ul> |
| 266 | +</li> |
| 267 | +</ul> |
239 | 268 | <h2>例</h2>
|
240 | 269 | <p><div class="yata" id="1b80342a7080438e44ef6bdca0dd25d2f2db6de8"><div class="codehilite"><pre><span></span><code><span class="cp">#include</span> <span class="cpf"><a href="../../iostream.html"><iostream></a></span><span class="cp"></span>
|
241 | 270 | <span class="cp">#include</span> <span class="cpf"><a href="../../map.html"><map></a></span><span class="cp"></span>
|
@@ -297,6 +326,13 @@ <h2>関連項目</h2>
|
297 | 326 | <h2>参照</h2>
|
298 | 327 | <ul>
|
299 | 328 | <li><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#464" target="_blank">LWG Issue 464. Suggestion for new member functions in standard containers</a></li>
|
| 329 | +</ul> |
| 330 | +<h2>参照</h2> |
| 331 | +<ul> |
| 332 | +<li><a href="http://open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2363r5.html" target="_blank">P2363R5 Extending associative containers with the remaining heterogeneous overloads</a><ul> |
| 333 | +<li>C++26で<code>template <class K></code>のバージョンが追加された</li> |
| 334 | +</ul> |
| 335 | +</li> |
300 | 336 | </ul></div>
|
301 | 337 |
|
302 | 338 | </div>
|
|
0 commit comments