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

回答編集履歴

2

追記

2019/04/13 02:42

投稿

episteme
episteme

スコア16612

answer CHANGED
@@ -50,4 +50,28 @@
50
50
 
51
51
  return 0;
52
52
  }
53
+ ```
54
+
55
+ vector<int*> を使っても構わんけど、リークの要因になるからオススメしない。
56
+ ```C++
57
+ #include<memory>
58
+ #include<vector>
59
+ #include <iostream>
60
+
61
+ int main() {
62
+ std::vector<int*> ints;
63
+
64
+ for ( int i = 0; i < 10; ++i ) {
65
+ ints.push_back(new int(i));
66
+ }
67
+
68
+ // かくにん(と解放)
69
+ for ( int* item : ints ) {
70
+ std::cout << *item << ' ';
71
+ // これ↓を忘れがちだからポインタの集合はお薦めしかねる
72
+ delete item;
73
+ }
74
+
75
+ return 0;
76
+ }
53
77
  ```

1

追記

2019/04/13 02:42

投稿

episteme
episteme

スコア16612

answer CHANGED
@@ -25,4 +25,29 @@
25
25
  }
26
26
  return 0;
27
27
  }
28
+ ```
29
+
30
+ 呈示された元コードを活かすなら:
31
+
32
+ ```C++
33
+ #include<memory>
34
+ #include<vector>
35
+ #include <iostream>
36
+
37
+ int main() {
38
+ std::vector<std::unique_ptr<int>> ints;
39
+
40
+ for ( int i = 0; i < 10; ++i ) {
41
+ std::unique_ptr<int> up;
42
+ up.reset(new int(i));
43
+ ints.push_back(std::move(up)); // std::moveせよ
44
+ }
45
+
46
+ // かくにん
47
+ for ( auto& item : ints ) {
48
+ std::cout << *item.get() << ' ';
49
+ }
50
+
51
+ return 0;
52
+ }
28
53
  ```