雑談

ふとした時に雑談を投下します.内容はロボットのことだったりそうでなかったり.

C++で複数の戻り値を返す

PythonMATLABでは複数の戻り値を簡単に返すことができるが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"}; みたいな感じで返すことが出きるらしいので少し簡単に記述できるようだ.

結論

同じことをstd::tupleでC++でも行えるが,一手間必要なのでちょっと面倒くさい.やはりPython神か.