对列表列表中的元素进行分组的最佳方式
Best way to group elements in a list of lists
我有 4 个排序数据列表。
std::vector<A> aList;
std::vector<B> bList;
std::vector<C> cList;
std::vector<D> dList;
我想找到 aList 和 bList 的唯一值组合。 例如。
aList = {1,1,2,2,2}
bList = {a,b,a,a,a}
cList = {c1,c2,c3,c4,c5}
dList = {d1,d2,d3,d4,d5}
预期产出
{c1,d1},
{c2,d2},
{{c3,d3},{c4,d4},{c5,d5}}
我尝试了一种使用 std::map 的方法,使用 aList 和 BList 的"值对"作为键来获得结果。 这工作正常,但代码看起来很复杂。
是否可以使用类(OOPS(实现相同的目标? 欢迎任何建议。
提前感谢,
维杰
好的,根据评论中的信息,这更有意义。
我有 4 个列表。这些列表包含有关某些 3dmodel 的信息。 aList - 对象颜色列表(RGB 值( bList - 列表 对象的透明度(0-1( cList - 对象列表本身 dList - 对象位置列表 我想对同一对象的所有对象进行分组 颜色和透明度值及其位置 –
事实上,这听起来像是一项注定要通过 OOP 解决的任务。使用单独的列表不是描述性的,并且可能会很快变得混乱。
首先创建一个像"DetailedObject
"这样的类,它有一个成员,用于你现在所说的"对象"(3D网格?(,位置和另一个类的成员,我称之为"AlphaColor
"。 "AlphaColor
"具有成员"颜色"和"透明度",因为您想按颜色和透明度的独特组合进行分组,对吗?
现在,您可以创建如下所示的结果数据结构:
std::map<AlphaColor, std::vector<DetailedObject>>
您会注意到,在您尚未实现 AlphaColor 的哈希函数之前,这不会编译(因为地图需要它(。不过,您应该在网上找到相关说明。
一旦你有了这个,你需要做的最后一件事就是遍历你的所有DetailedObject
,然后简单地将它们插入到地图中的相应 std::vector 中,方法是使用它们的AlphaColor
成员作为地图的键。
编辑:顺便说一下,您可能会找到一些现成的"RGBA"数据类型,而不是自定义的AlphaColor,因为这是许多对图形执行某些操作的库中的常见用例。
- 从嵌套在std::映射中的std::列表中删除元素的最佳方式
- Qt - QVector 和模型视图 - 从列表视图获取自定义类的最佳方法是什么?
- 从列表/向量制作嵌套 for 循环的最佳方法是什么?
- 对列表列表中的元素进行分组的最佳方式
- 生成包含给定类型的 N 个参数的可变参数列表的最佳方法?
- 用于筛子的最佳数据结构是什么(即一些被划掉的数字列表)?
- 能够访问逐项列表的最佳结构
- 存储数据列表并自动分配给结构的最佳方法是什么
- 获得给定向量的排列索引列表的最佳方法是什么?
- 调用列表中子对象方法的最佳方法
- 从初始值设定项列表中填充boost::multi_array的最佳方法是什么
- 如何添加到链接列表中以获得最佳拟合管理或删除某些内容
- C 初始化列表std ::数组最佳性能
- 可视化是什么是使用C 将附加扫描仪(Twain设备)列表列出到计算机的最佳方法
- 将结构分为函数参数列表的最佳方法
- 存储动态创建对象的列表/向量的最佳方法是什么
- 将元组传递给函数并让它返回数字列表的最佳方法
- 多列表初始化的 C++ 最佳做法
- XE2 - Indy TCPServer:编写和读取列表视图的最佳方式是什么
- 用于存储对象列表的最佳标准类