C++で複数の戻り値を返す
PythonやMATLABでは複数の戻り値を簡単に返すことができるがC++でも出きるのか調べてたらstd::tupleを使用することで可能らしい.
以下にサンプルコードを示す.
#include <iostream> #include <tuple> std::tuple<int, std::string> get_return_value() { return std::forward_as_tuple(11, "test"); } int main() { int a; std::string b; std::tie(a,b) = get_return_value(); std::cout << a << " " << b.c_str() << std::endl; return 0; }
関数宣言の際,戻り値の型をstd::tupleとし,returnで戻す際にstd::forward_as_tupleとして返すことで複数値戻すことができる.受け取る際はstd::tieで受け取る.これはc++11で出きるのでコンパイル際はオプションつけてコンパイルすることを忘れずに.
c++17だと,return {11, "test"}; みたいな感じで返すことが出きるらしいので少し簡単に記述できるようだ.