我有数亿个包含 float 的排序 vector ,每个数组的大小相同且相当小(少于十个),我需要从这些 vector 中收集唯一的 vector ,
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 ...}
只有当每个元素在数值上都相同(达到一定精度)时,一个数组才被认为与另一个数组“相同”,是否有适合这种目的的特殊树或其他数据结构?
最佳答案
是的,有。它叫做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
。
关于c++ - 收集唯一的排序 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47189554/