有没有一种方法可以为集合指定不同的唯一性和排序标准?

时间:2019-06-22 10:46:53

标签: c++ set

基本上,我试图在对象中插入一个对象,该对象具有基于两个属性的唯一性标准,并且也基于两个属性具有排序标准,因为该集合对唯一性和排序使用相同的重载<运算符。

我尝试将这两个选项放在相同的重载函数中,但是这会导致插入时间的明显增加。

if (this->getAG() == obj.getAG() && this->getAgentId() == obj.getAgentId()){

    return false;

}

else {

return (this->getPriority() < obj.getPriority() || 

       (this->getPriority() == obj.getPriority() && 
        this->getIdleTime() < obj.getIdleTime()) || 

       (this->getPriority() == obj.getPriority() && 
        this->getIdleTime() == obj.getIdleTime() && 
       (this->getAG() != obj.getAG() || this->getAgentId() != obj.getAgentId())
       )
       );

}

1 个答案:

答案 0 :(得分:0)

根据https://en.cppreference.com/w/cpp/container/set,集合通常实现为红黑树。因此,插入算法是O(log n)乘以使用的比较函数。