const_local_iterator cend(size_type n) const;
概要
インデックス(添え字)で指定したバケット内の最後の要素の次を指す読み取り専用イテレータを取得する。
unordered_multiset
は非順序連想コンテナであるため「最後」に特に意味はないが、cbegin(size_type)
で得られたイテレータを cend(size_type)
まで operator++()
でイテレートすることで当該バケットの要素を漏れなくダブりなく走査することができる。
要件
パラメータ n
は [0, bucket_count())
の範囲でなければならない。
戻り値
インデックス(添え字) n
で指定したバケット内の最後の要素の次を指すイテレータ
計算量
定数
例
#include <iostream>
#include <string>
#include <unordered_set>
#include <algorithm>
#include <iterator>
int main()
{
std::unordered_multiset<std::string> ums{ "A", "B", "C", "D", "E", "A", "B", "C", "D", "E", };
decltype(ums)::size_type c = ums.bucket_count();
std::cout << "bucket_count() = " << c << std::endl;
for (decltype(ums)::size_type b = 0; b < c; ++b) {
decltype(ums)::size_type s = ums.bucket_size(b);
std::cout << "bucket = " << b << ", bucket_size = " << s << ", keys = { ";
std::copy(ums.cbegin(b), ums.cend(b), std::ostream_iterator<std::string>(std::cout, ", "));
std::cout << "}" << std::endl;
}
}
出力
bucket_count() = 11
bucket = 0, bucket_size = 0, keys = { }
bucket = 1, bucket_size = 0, keys = { }
bucket = 2, bucket_size = 0, keys = { }
bucket = 3, bucket_size = 0, keys = { }
bucket = 4, bucket_size = 0, keys = { }
bucket = 5, bucket_size = 6, keys = { A, A, C, C, D, D, }
bucket = 6, bucket_size = 2, keys = { E, E, }
bucket = 7, bucket_size = 2, keys = { B, B, }
bucket = 8, bucket_size = 0, keys = { }
bucket = 9, bucket_size = 0, keys = { }
bucket = 10, bucket_size = 0, keys = { }
バージョン
言語
- C++11
処理系
- Clang: 3.1 ✅
- GCC: 4.7.0 ✅
- ICC: ?
- Visual C++: ?
関連項目
名前 | 説明 |
---|---|
begin |
先頭要素を指すイテレータの取得 |
end |
最終要素の次を指すイテレータの取得 |
cbegin |
先頭要素を指す読み取り専用イテレータの取得 |
cend |
最終要素の次を指す読み取り専用イテレータの取得 |
begin(size_type) |
インデックス(添え字)で指定したバケット内の先頭要素を指すイテレータを取得 |
end(size_type) |
インデックス(添え字)で指定したバケット内の最終要素の次を指すイテレータを取得 |
cbegin(size_type) |
インデックス(添え字)で指定したバケット内の先頭要素を指す読み取り専用イテレータを取得 |