|
200 | 200 |
|
201 | 201 | <p class="text-right"><small>
|
202 | 202 | 最終更新日時(UTC):
|
203 |
| - <span itemprop="datePublished" content="2024-12-22T06:27:29"> |
204 |
| - 2024年12月22日 06時27分29秒 |
| 203 | + <span itemprop="datePublished" content="2025-05-22T05:54:19"> |
| 204 | + 2025年05月22日 05時54分19秒 |
205 | 205 | </span>
|
206 | 206 | <br/>
|
207 | 207 | <span itemprop="author" itemscope itemtype="http://schema.org/Person">
|
208 |
| - <span itemprop="name">Raclamusi</span> |
| 208 | + <span itemprop="name">Akira Takahashi</span> |
209 | 209 | </span>
|
210 | 210 | が更新
|
211 | 211 | </small></p>
|
|
225 | 225 | <div class="col-sm-12 content-body">
|
226 | 226 |
|
227 | 227 | <div class="identifier-type">function</div><div class="header"><unordered_map></div><h1 itemprop="name"><span class="namespace" title="namespace std">std::</span><span class="class" title="class unordered_map">unordered_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">T</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">T</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>参照のためのメソッドで、取り出す時にキーの存在チェックをする。</p>
|
| 239 | +<ul> |
| 240 | +<li>(1), (2) : クラスのテンプレートパラメータ<code>key_type</code>型のキーに対応する要素を取得する</li> |
| 241 | +<li>(3), (4) : <code>key_type</code>と比較可能な<code>K</code>型のキーに対応する要素を取得する</li> |
| 242 | +</ul> |
| 243 | +<h2><a class="cpprefjp-defined-word" data-desc="関数等の意味論を構成する要素の1つ。Constraints。関数であればオーバーロード解決に参加するための条件、それ以外であれば受け付ける型の条件">テンプレートパラメータ制約</a></h2> |
| 244 | +<ul> |
| 245 | +<li>(3), (4) : <code>key_compare::is_transparent</code> が妥当な式であること</li> |
| 246 | +</ul> |
| 247 | +<h2><a class="cpprefjp-defined-word" data-desc="関数等の意味論を構成する要素の1つ。Preconditions。関数呼び出し時に満たされていると関数が想定する条件。満たさなければ未定義の動作。契約属性の`[[expects]]`に相当">事前条件</a></h2> |
| 248 | +<ul> |
| 249 | +<li>(3), (4) : <code><a href="find.html">find</a>(x)</code>が妥当な式であり、定義された動作をすること</li> |
| 250 | +</ul> |
234 | 251 | <h2><a class="cpprefjp-defined-word" data-desc="関数呼び出し式の評価結果となるオブジェクト・値">戻り値</a></h2>
|
235 |
| -<p>キーxに対応する値を返す。</p> |
| 252 | +<p>キー<code>x</code>に対応する値を返す。</p> |
236 | 253 | <h2><a class="cpprefjp-defined-word" data-desc="問題が発生したときに、現在実行位置を過去に通過・記録した位置に戻し、文脈情報を添えて紐づけられた処理(例外ハンドラー)を呼び出す仕組み。またはその事態">例外</a></h2>
|
237 |
| -<p>オブジェクトが存在しないときは、out_of_range<a class="cpprefjp-defined-word" data-desc="問題が発生したときに、現在実行位置を過去に通過・記録した位置に戻し、文脈情報を添えて紐づけられた処理(例外ハンドラー)を呼び出す仕組み。またはその事態">例外</a>を投げる。</p> |
| 254 | +<ul> |
| 255 | +<li>指定されたキーに対応する要素が存在しない場合、<code><a href="../../stdexcept.html">std::out_of_range</a></code><a class="cpprefjp-defined-word" data-desc="問題が発生したときに、現在実行位置を過去に通過・記録した位置に戻し、文脈情報を添えて紐づけられた処理(例外ハンドラー)を呼び出す仕組み。またはその事態">例外</a>を送出する</li> |
| 256 | +</ul> |
238 | 257 | <h2><a class="cpprefjp-defined-word" data-desc="関数等の意味論を構成する要素の1つ。Complexity。関数が使うアルゴリズムの空間計算量・時間計算量">計算量</a></h2>
|
239 | 258 | <ul>
|
240 | 259 | <li>平均: 定数時間</li>
|
241 | 260 | <li>最悪: <code><a href="size.html">size</a></code> について線形時間</li>
|
242 | 261 | </ul>
|
| 262 | +<h2>備考</h2> |
| 263 | +<ul> |
| 264 | +<li>(3), (4) :<ul> |
| 265 | +<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> |
| 266 | +<li>これらの<a class="cpprefjp-defined-word" data-desc="同名の関数を異なる引数・テンプレート・制約などで複数定義すること。または同名の関数の集合">オーバーロード</a>は、<code>map<string, int></code>のようなコンテナに対し、検索操作で文字列リテラルを渡した際に、キー型の一時オブジェクトが生成されるコストを減らすためにある。</li> |
| 267 | +</ul> |
| 268 | +</li> |
| 269 | +</ul> |
243 | 270 | <h2>例</h2>
|
244 | 271 | <p><div class="yata" id="fc5a49a1f8cc76d634f1deee68c99c201ec3c182"><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>
|
245 | 272 | <span class="cp">#include</span> <span class="cpf"><a href="../../unordered_map.html"><unordered_map></a></span><span class="cp"></span>
|
@@ -305,6 +332,10 @@ <h2>関連項目</h2>
|
305 | 332 | <h2>参照</h2>
|
306 | 333 | <ul>
|
307 | 334 | <li><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#761" target="_blank">LWG Issue 761. <code>unordered_map</code> needs an <code>at()</code> member function</a></li>
|
| 335 | +<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> |
| 336 | +<li>C++26で<code>template <class K></code>のバージョンが追加された</li> |
| 337 | +</ul> |
| 338 | +</li> |
308 | 339 | </ul></div>
|
309 | 340 |
|
310 | 341 | </div>
|
|
0 commit comments