回答編集履歴
3
リンク追加
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
ループ前追記
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()追記
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
|
+
```
|