回答編集履歴
3
加筆
answer
CHANGED
@@ -40,4 +40,7 @@
|
|
40
40
|
TestList.remove(*this);
|
41
41
|
}
|
42
42
|
}
|
43
|
-
```
|
43
|
+
```
|
44
|
+
|
45
|
+
...とはいえこんな危ういコードは書くべきではない。
|
46
|
+
自分自身を抹殺するより、殺し屋を雇うが吉かと。
|
2
微修正
answer
CHANGED
@@ -26,6 +26,7 @@
|
|
26
26
|
TestList.emplace_back(1);
|
27
27
|
TestList.emplace_back(2);
|
28
28
|
|
29
|
+
// コンテナから削除されるかもしれんので、iteratorは使えない
|
29
30
|
while ( !TestList.empty() ) {
|
30
31
|
TestList.back().F();
|
31
32
|
}
|
1
加筆
answer
CHANGED
@@ -1,3 +1,6 @@
|
|
1
|
+
vector<T>::remove はコンテナの中から等しい要素を探して削除するので、
|
2
|
+
等しい(`==`)か否かが判定できにゃならんです。
|
3
|
+
|
1
4
|
```C++
|
2
5
|
#include<iostream>
|
3
6
|
#include<list>
|
@@ -11,6 +14,7 @@
|
|
11
14
|
void F();
|
12
15
|
};
|
13
16
|
|
17
|
+
// 等しければtrue
|
14
18
|
inline bool operator==(const cEnemy& x, const cEnemy& y) {
|
15
19
|
return x.id() == y.id();
|
16
20
|
}
|