我有数亿个包含浮点数的排序向量,每个数组的大小相同且相当小(小于10),我需要从这些向量中收集唯一的向量,
vec1 = {1.0, 1.2, 1.4, 1.6, 1.8}
vec2 = {1.0, 1.1, 1.3, 1.5, 1.7}
vec2 = {1.0, 1.3, 1.4, 1.5, 1.6}
...
SomeTree ={vec1, vec2, vec3 ...}
数组被视为"相同"如果每个元素在数值上都相同(达到一定的精度),那么是否存在另一个,是否有适合此目的的特殊树或其他数据结构?
答案 0 :(得分:2)
是的,有。它被称为std::set
:
#include <vector>
#include <set>
int main()
{
std::set<std::vector<double>> s{
{ 1.0, 1.1, 1.3, 1.5, 1.7 },
{ 1.0, 1.2, 1.4, 1.6, 1.8 },
{ 1.0, 1.1, 1.3, 1.5, 1.7 },
{ 1.0, 1.3, 1.4, 1.5, 1.6 },
{ 1.0, 1.2, 1.4, 1.6, 1.8 },
{ 1.0, 1.1, 1.3, 1.5, 1.7 },
{ 1.0, 1.2, 1.4, 1.6, 1.8 },
{ 1.0, 1.3, 1.4, 1.5, 1.6 },
{ 1.0, 1.3, 1.4, 1.5, 1.6 },
};
}
您可能希望深入分析模板的Compare
参数,以便定义符合您要求的less
。