【发布时间】:2018-06-24 03:52:08
【问题描述】:
我有一个 CustomClass 对象的向量 - 其中有一个名为 name 的字符串字段。如何在 C++ 中创建这些名称的 set?
如果我这样做:
std::vector<CustomClass> vec ;
// .... populate with data
std::set< std::string> myset( vec.begin(), vec.end() ) ;
编译器当然会抱怨,但是我如何“应用”一个函数,以便从向量的每个元素中获取“vec.name”?
我正在使用 C++11。
【问题讨论】:
-
@nwp 分两步进行 - 首先创建一组 CustomClass,然后使用转换?
-
这就是我会做的。或者,您可以编写一个自定义的
vector_iterator_wrapper,在取消引用时返回vec_it->name,但这似乎是很多工作都没有收获。你也可以让CustomClass隐式转换为std::string,但这很不靠谱。 -
另一种简单的方法,就是在向量 vec 上创建一个简单的 for 循环,将每个元素插入 myset。像这样: for (const CustomClass &c : vec){myset.insert(c.name);}
标签: c++ c++11 vector lambda set