回答編集履歴
4
コード修正
test
CHANGED
@@ -30,7 +30,7 @@
|
|
30
30
|
|
31
31
|
struct agent a[N] = { 0 };
|
32
32
|
|
33
|
-
+ int last = N
|
33
|
+
+ int last = N;
|
34
34
|
|
35
35
|
//追跡店の初期分布,運動の内容など今回問題となっている箇所と関係ない部分は省略してあります.
|
36
36
|
|
@@ -38,7 +38,7 @@
|
|
38
38
|
|
39
39
|
- for (int i = 0; i < N; ++i) { //各エージェントの計算
|
40
40
|
|
41
|
-
+ for (int i = 0; i <
|
41
|
+
+ for (int i = 0; i < last; ++i) { //各エージェントの計算
|
42
42
|
|
43
43
|
if (a[i].category == 1) {
|
44
44
|
|
@@ -46,7 +46,7 @@
|
|
46
46
|
|
47
47
|
- a.pop_back();//今回問題になっているのはここの2行です
|
48
48
|
|
49
|
-
+ a[i] = a[last
|
49
|
+
+ a[i] = a[--last];
|
50
50
|
|
51
51
|
}
|
52
52
|
|
3
コード修正
test
CHANGED
@@ -38,7 +38,7 @@
|
|
38
38
|
|
39
39
|
- for (int i = 0; i < N; ++i) { //各エージェントの計算
|
40
40
|
|
41
|
-
+ for (int i = 0; i < last; ++i) { //各エージェントの計算
|
41
|
+
+ for (int i = 0; i <= last; ++i) { //各エージェントの計算
|
42
42
|
|
43
43
|
if (a[i].category == 1) {
|
44
44
|
|
2
コード追記
test
CHANGED
@@ -17,3 +17,43 @@
|
|
17
17
|
+ for (int i = 0; i < a.size(); ++i) { //各エージェントの計算
|
18
18
|
|
19
19
|
```
|
20
|
+
|
21
|
+
|
22
|
+
|
23
|
+
---
|
24
|
+
|
25
|
+
末尾の要素を対象から外すだけなら、最終要素のインデックスを覚えておくだけでも良いと思いますが。
|
26
|
+
|
27
|
+
```diff
|
28
|
+
|
29
|
+
int main(int argc, char* argv[]) {
|
30
|
+
|
31
|
+
struct agent a[N] = { 0 };
|
32
|
+
|
33
|
+
+ int last = N - 1;
|
34
|
+
|
35
|
+
//追跡店の初期分布,運動の内容など今回問題となっている箇所と関係ない部分は省略してあります.
|
36
|
+
|
37
|
+
for (int T = 1; T <= TIMELIMIT; ++T) {////打ち切り時間まで計算
|
38
|
+
|
39
|
+
- for (int i = 0; i < N; ++i) { //各エージェントの計算
|
40
|
+
|
41
|
+
+ for (int i = 0; i < last; ++i) { //各エージェントの計算
|
42
|
+
|
43
|
+
if (a[i].category == 1) {
|
44
|
+
|
45
|
+
- a[i] = a.back();
|
46
|
+
|
47
|
+
- a.pop_back();//今回問題になっているのはここの2行です
|
48
|
+
|
49
|
+
+ a[i] = a[last--];
|
50
|
+
|
51
|
+
}
|
52
|
+
|
53
|
+
}
|
54
|
+
|
55
|
+
}
|
56
|
+
|
57
|
+
}
|
58
|
+
|
59
|
+
```
|
1
指摘追加
test
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
`vector`を使用してください。
|
1
|
+
`back()`や`pop_back()`したいのであれば`vector`を使用してください。
|
2
2
|
|
3
3
|
```diff
|
4
4
|
|
@@ -7,3 +7,13 @@
|
|
7
7
|
+ std::vector<agent> a(N);
|
8
8
|
|
9
9
|
```
|
10
|
+
|
11
|
+
これだけでは`pop_back()`の後に範囲外アクセスが発生するので以下も修正してください。
|
12
|
+
|
13
|
+
```diff
|
14
|
+
|
15
|
+
- for (int i = 0; i < N; ++i) { //各エージェントの計算
|
16
|
+
|
17
|
+
+ for (int i = 0; i < a.size(); ++i) { //各エージェントの計算
|
18
|
+
|
19
|
+
```
|