回答編集履歴

2

追記

2017/02/09 23:02

投稿

PineMatsu
PineMatsu

スコア3579

test CHANGED
@@ -63,3 +63,13 @@
63
63
  ```
64
64
 
65
65
  ただ、これなら1行で書けるので関数にする必要もなくなるという考えもあります。
66
+
67
+
68
+
69
+
70
+
71
+ 更に追記です。
72
+
73
+
74
+
75
+ vectorはデバッグビルドだとかなり速度が遅くなります(VC++ではそうです)。なので、リリースビルドすれば高速に動作する可能性があります。

1

追記

2017/02/09 23:02

投稿

PineMatsu
PineMatsu

スコア3579

test CHANGED
@@ -35,3 +35,31 @@
35
35
  上記は2つのvectorのサイズがv1のほうがサイズが大きい場合は例外が出ると思います。サイズが違ってたら空っぽのvectorを返すとか、小さいサイズを変換の元にするなどが必要かと思います。その辺は自分なりに工夫してください。
36
36
 
37
37
  (boost.rangeを使えばtransformはもう少し簡潔に記述できます。)
38
+
39
+
40
+
41
+ 戻り値を新たに返すのではなく、例えば引数のv1に返すという手もあります。そうすれば戻り値を返す時のコピーを防げます。
42
+
43
+
44
+
45
+ ```C++
46
+
47
+ #include <algorithm>
48
+
49
+
50
+
51
+ using namespace std;
52
+
53
+
54
+
55
+ void Addition(vector<int>& v1, const vector<int>& v2)
56
+
57
+ {
58
+
59
+ transform(v1.begin(), v1.end(), v2.begin(), v1.begin(), plus<int>());
60
+
61
+ }
62
+
63
+ ```
64
+
65
+ ただ、これなら1行で書けるので関数にする必要もなくなるという考えもあります。