【发布时间】:2020-08-15 11:02:31
【问题描述】:
考虑以下结构
struct Pair
{
int a;
std::string b;
};
我有一个 std::vector<Pair> pairs,但我想要一个 std::vector<std::string> listOfBFromPairs,它包含对列表中 b 的所有值。
我想在单行中做到这一点。
我之前用过OpenGL,之前创建了一个struct,指定了一个起点
pairs.begin() + offsetof(Pair, b)
并给定步长(内存中pair对象的大小)和我想要解析的东西的数量,它已经完成了我在这里所追求的。
这里也可以使用 c++ 迭代器吗?
我的具体用例是我想创建一个 无序集 Vulkan 扩展名,但 Vulkan 返回包含扩展名作为成员的结构。然后,我将使用无序集来检查我的应用程序想要使用的扩展。
【问题讨论】:
-
你关心重复吗?如果你不这样做,那么这是微不足道的。如果你这样做了,那么你要么需要选择
set而不是vector,要么之后需要删除重复项,但它不再是一个衬垫。 -
如果你想要一个 unordered_set 那么你为什么要创建一个向量呢?直接创建 unordered_set 即可。那将是一个班轮。
-
vulkan API 返回一个结构数组。 glfw API 返回一个字符串数组。它们保证是独一无二的。我正在使用无序集,因为我想要 O(1) 查找
标签: c++ algorithm data-structures iterator c++-standard-library