質問編集履歴

2

詳細を記載

2019/02/24 12:48

投稿

torimingo
torimingo

スコア122

test CHANGED
@@ -1 +1 @@
1
- c++におけるイテレータの代入
1
+ c++におけるイテレータの使い方
test CHANGED
@@ -1,43 +1,85 @@
1
- C++で、イテレータの代入がわかりません。
1
+ C++で、イテレータの使い方がよくわかりません。
2
2
 
3
- 以下のコードのaiueo()の引数にmain()からイテレータを渡ことができません
3
+ 以下のコードのmain()でコメントアウトした箇所をaiueo()で処理したいです。
4
4
 
5
- コンパイルは通りますが、実行時エラー(コアダンプ)で落ちます。
5
+ コンパイルは通りますが、実行時エラー(Segmentation fault (コアダンプ))で落ちます。
6
6
 
7
7
  ```c++
8
8
 
9
- void aiueo(vector<string> *v, vector<string>::iterator itr){
9
+ 1 #include <iostream>
10
10
 
11
- // itrを使って、vを操作する
11
+ 2 #include <vector>
12
12
 
13
- return;
13
+ 3 #include <string>
14
14
 
15
- }
15
+ 4
16
16
 
17
+ 5 using namespace std;
17
18
 
19
+ 6
18
20
 
19
- int main(){
21
+ 7 void aiueo(vector<string> *v, vector<string>::iterator itr, double tmp){
20
22
 
21
- vector<string> v;
23
+ 8 itr = v->insert(itr - 1, to_string(tmp));
22
24
 
23
- vector<string>::iterator itr;
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
- // vに値を入れる
31
+ 12 itr--;
28
32
 
33
+ 13 }
29
34
 
35
+ 14
30
36
 
31
- itr = v.begin();
37
+ 15 int main(){
32
38
 
33
- aiueo(&v, itr);
39
+ 16 double tmp;
34
40
 
41
+ 17
35
42
 
43
+ 18 vector<string> v {"2", "+", "3"};
36
44
 
37
- return 0;
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
- どのようにしたら、aiueo()にイテレータを渡せます
83
+ どのようにしたら、いいのでしょう
84
+
85
+ aiueo()を使わないで、main()でコメントアウトしている箇所の処理を使うと、正常な結果として、5が出力されます。

1

誤記のため

2019/02/24 12:48

投稿

torimingo
torimingo

スコア122

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