【发布时间】:2015-08-05 13:42:12
【问题描述】:
这里是参考代码:
struct MyData
{
int ID;
// other members
};
std::vector<MyData> inputData;
std::vector<std::vector<MyData> > outputData = GroupByIDs(inputData);
基本上我想要做的是迭代输入数据并按 ID 将对象分组到一个新的迷你向量中,我将把它推入输出向量。所以最后我会有一个子向量的向量,其中每个子向量都包含具有相同 ID 的对象。
是否有一种 cookie-cutter 最有效的算法可以做到这一点?因为我只能想到复杂度很高的算法。
【问题讨论】:
-
您有什么顾虑?如何确定组,如何确定相似度?或者如何有效地将数据从 inputData 传输到 outputData?
-
目前我保留了一个缓冲区来保存已经添加的 ID,并且每次迭代都会进行大量搜索,我需要一种有效的方法来完成它
-
好的,相似度是如何定义的?利用相似性定义的属性具有很大的优化潜力。
-
@peterchen 我编辑了这个问题,通过相似性我的意思是相同的 ID
标签: c++ algorithm vector grouping