std::unordered_map<Key,T,Hash,KeyEqual,Allocator>:: end, std::unordered_map<Key,T,Hash,KeyEqual,Allocator>:: cend
From cppreference.net
<
cpp
|
container
|
unordered map
|
iterator end
(
)
noexcept
;
|
(1) |
(C++11以降)
(C++26以降 constexpr) |
|
const_iterator end
(
)
const
noexcept
;
|
(2) |
(C++11以降)
(C++26以降 constexpr) |
|
const_iterator cend
(
)
const
noexcept
;
|
(3) |
(C++11以降)
(C++26以降 constexpr) |
* this の最後の要素の次を指すイテレータを返します。
この返されたイテレータはセンチネルとしてのみ機能します。これが dereferenceable であることは保証されません。
目次 |
戻り値
最後の要素の次のイテレータ。
計算量
定数。
例
このコードを実行
#include <cmath> #include <iostream> #include <unordered_map> struct Node { double x, y; }; int main() { Node nodes[3] = {{1, 0}, {2, 0}, {3, 0}}; // mag は平面におけるNodeのアドレスとその大きさをマッピングするマップ std::unordered_map<Node*, double> mag = { { nodes + 0, 1 }, { nodes + 1, 2 }, { nodes + 2, 3 } }; // 各y座標を0から大きさに変更 for (auto iter = mag.begin(); iter != mag.end(); ++iter) { auto cur = iter->first; // Nodeへのポインタ cur->y = mag[cur]; // cur->y = iter->second; も使用可能 } // 各ノードの大きさを更新して出力 for (auto iter = mag.begin(); iter != mag.end(); ++iter) { auto cur = iter->first; mag[cur] = std::hypot(cur->x, cur->y); std::cout << "The magnitude of (" << cur->x << ", " << cur->y << ") is "; std::cout << iter->second << '\n'; } // 範囲ベースforループで上記を繰り返し for (auto i : mag) { auto cur = i.first; cur->y = i.second; mag[cur] = std::hypot(cur->x, cur->y); std::cout << "The magnitude of (" << cur->x << ", " << cur->y << ") is "; std::cout << mag[cur] << '\n'; // 上記の std::cout << iter->second << '\n'; とは対照的に、 // std::cout << i.second << '\n'; は更新された大きさを出力しない } }
出力例:
The magnitude of (3, 3) is 4.24264 The magnitude of (1, 1) is 1.41421 The magnitude of (2, 2) is 2.82843 The magnitude of (3, 4.24264) is 5.19615 The magnitude of (1, 1.41421) is 1.73205 The magnitude of (2, 2.82843) is 3.4641
関連項目
|
先頭を指すイテレータを返す
(public member function) |
|
|
(C++11)
(C++14)
|
コンテナまたは配列の終端を指すイテレータを返す
(function template) |