|
200 | 200 |
|
201 | 201 | <p class="text-right"><small>
|
202 | 202 | 最終更新日時(UTC):
|
203 |
| - <span itemprop="datePublished" content="2024-06-11T13:45:38"> |
204 |
| - 2024年06月11日 13時45分38秒 |
| 203 | + <span itemprop="datePublished" content="2025-05-22T07:22:52"> |
| 204 | + 2025年05月22日 07時22分52秒 |
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"><unordered_set></div><h1 itemprop="name"><span class="namespace" title="namespace std">std::</span><span class="class" title="class unordered_multiset">unordered_multiset::</span><span class="token">bucket</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">size_type</span> <span class="nf">bucket</span><span class="p">(</span><span class="k">const</span> <span class="n">key_type</span><span class="o">&</span> <span class="n">k</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">size_type</span> <span class="nf">bucket</span><span class="p">(</span><span class="k">const</span> <span class="n">key_type</span><span class="o">&</span> <span class="n">k</span><span class="p">)</span> <span class="k">const</span><span class="p">;</span> <span class="c1">// (1) C++11</span> |
| 229 | + |
| 230 | +<span class="k">template</span> <span class="o"><</span><span class="k">class</span> <span class="nc">K</span><span class="o">></span> |
| 231 | +<span class="n">size_type</span> <span class="n">bucket</span><span class="p">(</span><span class="k">const</span> <span class="n">K</span><span class="o">&</span> <span class="n">k</span><span class="p">)</span> <span class="k">const</span><span class="p">;</span> <span class="c1">// (2) C++26</span> |
229 | 232 | </code></pre></div>
|
230 | 233 | </p>
|
231 | 234 | <h2>概要</h2>
|
232 | 235 | <p>指定したキーと等価な要素が格納されている場合、そのバケットのインデックス(添え字)を取得する。</p>
|
233 |
| -<h2>要件</h2> |
| 236 | +<ul> |
| 237 | +<li>(1) : <code>key_type</code>型のキーを受け取って、バケットのインデックスを取得する</li> |
| 238 | +<li>(2) : <code>key_type</code>と比較可能なキーを受け取って、バケットのインデックスを取得する</li> |
| 239 | +</ul> |
| 240 | +<h2><a class="cpprefjp-defined-word" data-desc="関数等の意味論を構成する要素の1つ。Constraints。関数であればオーバーロード解決に参加するための条件、それ以外であれば受け付ける型の条件">テンプレートパラメータ制約</a></h2> |
| 241 | +<ul> |
| 242 | +<li>(2) : <code>key_compare::is_transparent</code> が妥当な式であること</li> |
| 243 | +</ul> |
| 244 | +<h2><a class="cpprefjp-defined-word" data-desc="関数等の意味論を構成する要素の1つ。Preconditions。関数呼び出し時に満たされていると関数が想定する条件。満たさなければ未定義の動作。契約属性の`[[expects]]`に相当">事前条件</a></h2> |
234 | 245 | <p>当該コンテナは <code><a href="bucket_count.html">bucket_count</a>() > 0</code> であること</p>
|
235 | 246 | <h2><a class="cpprefjp-defined-word" data-desc="関数呼び出し式の評価結果となるオブジェクト・値">戻り値</a></h2>
|
236 | 247 | <p>パラメータ <code>k</code> と等価なキーの要素が格納されているバケットのインデックス(添え字)</p>
|
| 248 | +<h2><a class="cpprefjp-defined-word" data-desc="関数等の意味論を構成する要素の1つ。Postconditions。関数を実行後に満たされている条件。契約属性の`[[ensures]]`に相当">事後条件</a></h2> |
237 | 249 | <p><a class="cpprefjp-defined-word" data-desc="関数呼び出し式の評価結果となるオブジェクト・値">戻り値</a>は <code>[0, <a href="bucket_count.html">bucket_count</a>())</code> の範囲である。</p>
|
238 | 250 | <h2><a class="cpprefjp-defined-word" data-desc="関数等の意味論を構成する要素の1つ。Complexity。関数が使うアルゴリズムの空間計算量・時間計算量">計算量</a></h2>
|
239 | 251 | <p>定数。</p>
|
240 | 252 | <h2>備考</h2>
|
241 |
| -<p>指定したキーと等価な要素が格納されていない場合、そのキーを挿入した際に <code><a href="rehash.html">rehash</a></code> が発生しなければ格納されるバケットのインデックス(添え字)が返る。</p> |
| 253 | +<ul> |
| 254 | +<li>指定したキーと等価な要素が格納されていない場合、そのキーを挿入した際に <code><a href="rehash.html">rehash</a></code> が発生しなければ格納されるバケットのインデックス(添え字)が返る。</li> |
| 255 | +<li>(2) :<ul> |
| 256 | +<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> |
| 257 | +<li>これらの<a class="cpprefjp-defined-word" data-desc="同名の関数を異なる引数・テンプレート・制約などで複数定義すること。または同名の関数の集合">オーバーロード</a>は、<code>map<string, int></code>のようなコンテナに対し、検索操作で文字列リテラルを渡した際に、キー型の一時オブジェクトが生成されるコストを減らすためにある。</li> |
| 258 | +</ul> |
| 259 | +</li> |
| 260 | +</ul> |
242 | 261 | <h2>例</h2>
|
243 | 262 | <p><div class="yata" id="aee235fce5921276e87464ccc8d292efc42eca4c"><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>
|
244 | 263 | <span class="cp">#include</span> <span class="cpf"><a href="../../string.html"><string></a></span><span class="cp"></span>
|
@@ -306,7 +325,14 @@ <h2>関連項目</h2>
|
306 | 325 | <td>最大バケット数の取得</td>
|
307 | 326 | </tr>
|
308 | 327 | </tbody>
|
309 |
| -</table></div> |
| 328 | +</table> |
| 329 | +<h2>参照</h2> |
| 330 | +<ul> |
| 331 | +<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> |
| 332 | +<li>C++26で<code>template <class K></code>のバージョンが追加された</li> |
| 333 | +</ul> |
| 334 | +</li> |
| 335 | +</ul></div> |
310 | 336 |
|
311 | 337 | </div>
|
312 | 338 | </div>
|
|
0 commit comments