【发布时间】:2015-06-15 11:11:45
【问题描述】:
有没有办法在 C++11 中使用高阶函数返回不同类型的向量?我有一个 std::vector<std::string> 并想将其转换为 std::vector<Foo> 这是我自己设备的枚举。
假设我有一个方法Foo toFoo(std::string)。我试过了:
std::vector<Foo> m_Foos = std::for_each(m_Foo_strings.begin(),
m_Foo_strings.end(),
[this](std::string &s){ toFoo(s); } );
也试过了:
std::vector<Foo> m_Foos = std::transform(m_Foo_strings.begin(),
m_Foo_strings.end(),
m_Foo_strings.begin(),
[this](std::string &s){ toFoo(s); } );
但两者都无法编译。它抱怨没有从 std::string 到 Foo 定义 operator=。
必须有一种通用的方法来做我在这里尝试的事情,我错过了什么?
【问题讨论】:
-
任何文档都会很快告诉您这些函数有哪些参数和返回类型。
标签: c++ c++11 vector lambda stl