从向量<T>创建一组字符串

gho*_*der 1 c++ lambda vector set c++11

我有一个CustomClass对象向量- 有一个字符串字段调用name.如何set在C++中创建这些名称?

如果我这样做:

std::vector<CustomClass> vec ;
// .... populate with data
std::set< std::string> myset( vec.begin(), vec.end() ) ;
Run Code Online (Sandbox Code Playgroud)

编译器当然会抱怨,但是如何"应用"一个函数,以便我从向量的每个元素中得到"vec.name"?

我正在使用C++ 11.

son*_*yao 8

您可以将std :: transformlambda一起使用(因为C++ 11),例如

std::set<std::string> myset;
std::transform(vec.begin(), 
               vec.end(), 
               std::inserter(myset, myset.end()), 
               [](const CustomClass& cc) { return cc.name; });
Run Code Online (Sandbox Code Playgroud)

生活