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

回答編集履歴

2

appendix

2019/04/06 12:29

投稿

yohhoy
yohhoy

スコア6191

answer CHANGED
@@ -17,4 +17,6 @@
17
17
  // vi := int型変数
18
18
  // s := string型変数
19
19
  // vd := double型変数
20
- ```
20
+ ```
21
+
22
+ C++ Core Guildlinesでも [F.21: To return multiple "out" values, prefer returning a struct or tuple](http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rf-out-multi) にてタプル(や構造体)による多値返却スタイルを推奨しています。

1

appendix

2019/04/06 12:29

投稿

yohhoy
yohhoy

スコア6191

answer CHANGED
@@ -1,8 +1,9 @@
1
1
  C++標準ライブラリにタプル型(`std::tuple`)が導入されたのはC++11以降と比較的新しいため、OpenCVのように歴史の長いライブラリでは積極的に切り替えてまでは利用されていません。
2
+ (OpenCVはもともとC言語APIから始まったほど歴史の古いライブラリですから、保守的にAPIを移行しているようです。最新のOpenCV 4系でようやくC APIが廃止されました。)
2
3
 
3
4
  > 引数経由だと入力と出力がわかりづらくなるので、可読性の面ではタプルで返すほうが直感的のような気がします。
4
5
 
5
- はい。最新のC++17では [構造化束縛(structured bindings)](https://cpprefjp.github.io/lang/cpp17/structured_bindings.html) も導入されたため、Pythonのような多値返却も可読性高く記述できるようになっています。
6
+ はい。最新のC++17では [構造化束縛(structured bindings)](https://cpprefjp.github.io/lang/cpp17/structured_bindings.html) も導入されたため、Pythonの多値返却も可読性高く記述できるようになっています。
6
7
 
7
8
  ```cpp
8
9
  #include <string>