c++ - 从 vector<T> 创建一组字符串

标签 c++ c++11 vector lambda set

我有一个 CustomClass 对象的 vector - 它有一个名为 name 的字符串字段。如何在 C++ 中创建这些名称的

如果我这样做:

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

编译器当然会报错,但是我怎样才能“应用”一个函数,以便从 vector 的每个元素中获取“vec.name”?

我正在使用 C++11。

最佳答案

您可以使用 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; });

LIVE

关于c++ - 从 vector<T> 创建一组字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48264298/

相关文章:

c++ - 适用于 Windows 的 Eclipse - 使用 libPNG

c++ - 在 C++ 中从 C 库正确初始化 typedef 结构

c++ - 强制 WSARecv 重叠

c++ - 基本移动分配运算符的调用顺序

c++ - 使用 std::function 的隐式转换

c++ - 需要对 getchar() 和换行符进行说明

c++ - 使用 Variadic 模板的任意维数组

c++ - 在 C++ 中,为什么数组比 std::vector 快得多?

c++ - fread 转 C++ Vector

java - 如何从不同类型的 vector 数组中随机选择相同类型的对象?