【发布时间】:2013-07-25 18:26:49
【问题描述】:
在我的项目中,我有一个包含一些关系数据的向量(一个包含两个表示它们之间关系的相似对象的结构),我需要检查向量中所有数据之间的关系组合。
我正在做的是遍历向量并在第一个 for 循环中再次进行迭代以查找数据之间的关系。
这是我正在做的简化模型
for(a=0; a<vec.size(); a++)
{
for(b=0; b<vec.size(); b++)
{
if(vec[a].something==vec[b].something) {...}
}
}
我的集合有 2800 个元素,这意味着我将迭代 2800*2800 次...
什么样的数据结构更适合这种操作? 使用 for_each 会比像这样遍历向量更快吗?
提前致谢!
vec 有两个结构,它们由两个整数组成,没有任何东西是有序的。
【问题讨论】:
-
也许使用将值映射到索引或迭代器的多重映射。
-
Vector 是最好的,你需要的是一个不是 n^2 的算法
-
排序后的向量然后在内部循环中使用第一个
b = a + 1 -
什么样的元素?数字?字符串?或者更复杂的东西?如果项目以某种方式可排序,请查看快速选择算法。
-
你的元素有什么订单吗?