質問編集履歴
2
詳細を記載
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
c++におけるイテレータの
|
1
|
+
c++におけるイテレータの使い方
|
test
CHANGED
@@ -1,43 +1,85 @@
|
|
1
|
-
C++で、イテレータの
|
1
|
+
C++で、イテレータの使い方がよくわかりません。
|
2
2
|
|
3
|
-
以下のコードのai
|
3
|
+
以下のコードのmain()でコメントアウトした箇所をaiueo()で処理したいです。
|
4
4
|
|
5
|
-
コンパイルは通りますが、実行時エラー(コアダンプ)で落ちます。
|
5
|
+
コンパイルは通りますが、実行時エラー(Segmentation fault (コアダンプ))で落ちます。
|
6
6
|
|
7
7
|
```c++
|
8
8
|
|
9
|
-
|
9
|
+
1 #include <iostream>
|
10
10
|
|
11
|
-
|
11
|
+
2 #include <vector>
|
12
12
|
|
13
|
-
|
13
|
+
3 #include <string>
|
14
14
|
|
15
|
-
|
15
|
+
4
|
16
16
|
|
17
|
+
5 using namespace std;
|
17
18
|
|
19
|
+
6
|
18
20
|
|
19
|
-
int m
|
21
|
+
7 void aiueo(vector<string> *v, vector<string>::iterator itr, double tmp){
|
20
22
|
|
21
|
-
ve
|
23
|
+
8 itr = v->insert(itr - 1, to_string(tmp));
|
22
24
|
|
23
|
-
|
25
|
+
9 itr = v->erase(itr + 1);
|
24
26
|
|
27
|
+
10 itr = v->erase(itr);
|
25
28
|
|
29
|
+
11 itr = v->erase(itr);
|
26
30
|
|
27
|
-
|
31
|
+
12 itr--;
|
28
32
|
|
33
|
+
13 }
|
29
34
|
|
35
|
+
14
|
30
36
|
|
31
|
-
it
|
37
|
+
15 int main(){
|
32
38
|
|
33
|
-
|
39
|
+
16 double tmp;
|
34
40
|
|
41
|
+
17
|
35
42
|
|
43
|
+
18 vector<string> v {"2", "+", "3"};
|
36
44
|
|
37
|
-
|
45
|
+
19
|
38
46
|
|
47
|
+
20 for(vector<string>::iterator itr = v.begin(); itr != v.end(); ++itr) {
|
48
|
+
|
49
|
+
21 if(*itr == "+"){
|
50
|
+
|
51
|
+
22 tmp = stod(*(itr - 1)) + stod(*(itr + 1));
|
52
|
+
|
53
|
+
23
|
54
|
+
|
55
|
+
24 //itr = v.insert(itr - 1, to_string(tmp));
|
56
|
+
|
57
|
+
25 //itr = v.erase(itr + 1);
|
58
|
+
|
59
|
+
26 //itr = v.erase(itr);
|
60
|
+
|
61
|
+
27 //itr = v.erase(itr);
|
62
|
+
|
63
|
+
28 //itr--;
|
64
|
+
|
65
|
+
29
|
66
|
+
|
67
|
+
30 aiueo(&v, itr, tmp);
|
68
|
+
|
69
|
+
31 }
|
70
|
+
|
71
|
+
32 }
|
72
|
+
|
73
|
+
33
|
74
|
+
|
75
|
+
34 cout << v[0] << endl;
|
76
|
+
|
77
|
+
35 return 0;
|
78
|
+
|
39
|
-
}
|
79
|
+
36 }
|
40
80
|
|
41
81
|
```
|
42
82
|
|
43
|
-
どのようにしたら、
|
83
|
+
どのようにしたら、いいのでしょうか。
|
84
|
+
|
85
|
+
aiueo()を使わないで、main()でコメントアウトしている箇所の処理を使うと、正常な結果として、5が出力されます。
|
1
誤記のため
test
CHANGED
File without changes
|
test
CHANGED
@@ -20,7 +20,7 @@
|
|
20
20
|
|
21
21
|
vector<string> v;
|
22
22
|
|
23
|
-
vector<string>::iteror itr;
|
23
|
+
vector<string>::iterator itr;
|
24
24
|
|
25
25
|
|
26
26
|
|