私は C++ を練習しているので、これは本番環境に入るコードではありませんが、非常に興味があります。
タイプのオブジェクトへのポインターのベクトルがありますPlayer
:
std::vector<Player*> _players;
std::string
method を呼び出すと、各プレイヤーは自分の名前を返しますget_name()
。次に例を示します。
std::string player0_name = _players[0]->get_name();
すべてのプレイヤー名を、文字列のベクトルへの参照として期待する関数に渡したい:
void all_player_names( std::vector< std::string >& );
これで、一時変数を介してこれを行うのが簡単になることがわかりました。最初に文字列のベクトルを作成し、そこにすべてのプレイヤー名を保存してから、all_player_names
参照として関数に渡します。
しかし、一時変数を作成せずにそれを行う方法を探しています。Python のリスト内包表記に似たものにする必要があります。ポインターの配列を反復処理し、それぞれに対して関数をPlayer
呼び出し、get_name()
返された文字列からベクトルを作成し、関数に直接渡す必要がありますall_player_names
。ラムダ関数とSTLのアルゴリズムで可能だと思いますが、どれかわかりません。
したがって、多かれ少なかれ次のようになります。
all_player_names(<function that i'm looking for>(
_players, [](Player* p) { return p->get_name();}
);
STLにそのようなアルゴリズムはありますか?