基本上,我试图在对象中插入一个对象,该对象具有基于两个属性的唯一性标准,并且也基于两个属性具有排序标准,因为该集合对唯一性和排序使用相同的重载<运算符。>
我尝试将这两个选项放在相同的重载函数中,但是这会导致插入时间的明显增加。
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())
)
);
}
答案 0 :(得分:0)
根据https://en.cppreference.com/w/cpp/container/set,集合通常实现为红黑树。因此,插入算法是O(log n)乘以使用的比较函数。