teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

加筆

2018/05/12 13:27

投稿

episteme
episteme

スコア16612

answer CHANGED
@@ -40,4 +40,7 @@
40
40
  TestList.remove(*this);
41
41
  }
42
42
  }
43
- ```
43
+ ```
44
+
45
+ ...とはいえこんな危ういコードは書くべきではない。
46
+ 自分自身を抹殺するより、殺し屋を雇うが吉かと。

2

微修正

2018/05/12 13:27

投稿

episteme
episteme

スコア16612

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

加筆

2018/05/12 12:38

投稿

episteme
episteme

スコア16612

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
  }