我正在练习 C++,所以这不是将要投入生产的代码,但我很想知道:
我有一个指向类型对象的指针向量Player
:
std::vector<Player*> _players;
std::string
当我调用它的方法时,每个玩家都会返回他的名字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
。我假设它应该可以使用 lambda 函数和 STL 中的一些算法,但我不知道是哪一个。
所以它看起来或多或少应该是这样的:
all_player_names(<function that i'm looking for>(
_players, [](Player* p) { return p->get_name();}
);
STL中有这样的算法吗?