收集独特的排序向量

时间:2017-11-08 20:56:50

标签: c++ data-structures tree

我有数亿个包含浮点数的排序向量,每个数组的大小相同且相当小(小于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 ...}

数组被视为"相同"如果每个元素在数值上都相同(达到一定的精度),那么是否存在另一个,是否有适合此目的的特殊树或其他数据结构?

1 个答案:

答案 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