我希望能够写出类似的东西
char f(char);
vector<char> bar;
vector<char> foo = map(f, bar);
Run Code Online (Sandbox Code Playgroud)
该transform
函数似乎相似,但它不会自动生成结果集合的大小.
Ara*_*raK 39
您可以使用std::back_inserter
的<iterator>
,虽然在前面提供尺寸更高效.例如:
string str = "hello world!", result;
transform(str.begin(), str.end(), back_inserter(result), ::toupper);
// result == "HELLO WORLD!"
Run Code Online (Sandbox Code Playgroud)
ein*_*ica 12
在C++ 11标准生效之前就已经提出了这个问题......现在我们已经std::transform()
将(丑陋)等效于函数式编程"map"了.以下是如何使用它:
auto f(char) -> char; // or if you like: char f(char)
vector<char> bar;
vector<char> foo;
// ... initialize bar somehow ...
std::transform(bar.begin(), bar.end(), std::back_inserter(foo), f);
Run Code Online (Sandbox Code Playgroud)