Skip to content

Commit 567ae39

Browse files
committed
unordered_map::bucket : C++26異種混合ルックアップに対応 #1189
1 parent bd07d85 commit 567ae39

File tree

1 file changed

+19
-3
lines changed
  • reference/unordered_map/unordered_map

1 file changed

+19
-3
lines changed

reference/unordered_map/unordered_map/bucket.md

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,29 @@
66
* cpp11[meta cpp]
77

88
```cpp
9-
size_type bucket(const key_type& k) const;
9+
size_type bucket(const key_type& k) const; // (1) C++11
10+
11+
template <class K>
12+
size_type bucket(const K& k) const; // (2) C++26
1013
```
1114
1215
## 概要
1316
指定したキーと等価な要素が格納されている場合、そのバケットのインデックス(添え字)を取得する。
1417
1518
16-
## 要件
19+
## テンプレートパラメータ制約
20+
- (2) : `key_compare::is_transparent` が妥当な式であること
21+
22+
23+
## 事前条件
1724
当該コンテナは [`bucket_count`](bucket_count.md)`() > 0` であること
1825
1926
2027
## 戻り値
2128
パラメータ `k` と等価なキーの要素が格納されているバケットのインデックス(添え字)
2229
30+
31+
## 事後条件
2332
戻り値は `[0,` [`bucket_count`](bucket_count.md)`())` の範囲である。
2433
2534
@@ -28,7 +37,10 @@ size_type bucket(const key_type& k) const;
2837
2938
3039
## 備考
31-
指定したキーと等価な要素が格納されていない場合、そのキーを挿入した際に [`rehash`](rehash.md) が発生しなければ格納されるバケットのインデックス(添え字)が返る。
40+
- 指定したキーと等価な要素が格納されていない場合、そのキーを挿入した際に [`rehash`](rehash.md) が発生しなければ格納されるバケットのインデックス(添え字)が返る。
41+
- (2) :
42+
- `is_transparent`は、標準ライブラリの[`std::less`](/reference/functional/less.md)、[`std::greater`](/reference/functional/greater.md)といった関数オブジェクトの、`void`に対する特殊化で定義される。それ以外のテンプレートパラメータで`is_transparent`が定義されないのは、互換性のためである。
43+
- これらのオーバーロードは、`map<string, int>`のようなコンテナに対し、検索操作で文字列リテラルを渡した際に、キー型の一時オブジェクトが生成されるコストを減らすためにある。
3244
3345
3446
## 例
@@ -95,3 +107,7 @@ key = H, bucket = 6, bucket_size = 0
95107
|---------------------------------------------|----------------------|
96108
| [`max_bucket_count`](max_bucket_count.md) | 最大バケット数の取得 |
97109

110+
111+
## 参照
112+
- [P2363R5 Extending associative containers with the remaining heterogeneous overloads](http://open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2363r5.html)
113+
- C++26で`template <class K>`のバージョンが追加された

0 commit comments

Comments
 (0)