回答編集履歴

3

リンク追加

2020/05/27 04:43

投稿

SHOMI
SHOMI

スコア4079

test CHANGED
@@ -16,7 +16,7 @@
16
16
 
17
17
 
18
18
 
19
- C++11ならイテレータを一つ前に戻したコピーを返す`std::prev()`も使用できます。
19
+ C++11ならイテレータを一つ前に戻したコピーを返す[`std::prev()`](https://cpprefjp.github.io/reference/iterator/prev.html)も使用できます。
20
20
 
21
21
  ```C++
22
22
 

2

ループ前追記

2020/05/27 04:43

投稿

SHOMI
SHOMI

スコア4079

test CHANGED
@@ -23,3 +23,5 @@
23
23
  if (!ex_vec.empty() && itr == std::prev(ex_vec.end()))
24
24
 
25
25
  ```
26
+
27
+ (要素の削除や挿入を行わないのであれば)ループ中で毎回空チェックや末尾要素のイテレータを求めるのは無駄なのでループ前に行うとよいです。

1

std::prev()追記

2020/05/27 03:37

投稿

SHOMI
SHOMI

スコア4079

test CHANGED
@@ -13,3 +13,13 @@
13
13
  if (!ex_vec.empty() && itr == ex_vec.end() - 1)
14
14
 
15
15
  ```
16
+
17
+
18
+
19
+ C++11ならイテレータを一つ前に戻したコピーを返す`std::prev()`も使用できます。
20
+
21
+ ```C++
22
+
23
+ if (!ex_vec.empty() && itr == std::prev(ex_vec.end()))
24
+
25
+ ```