У меня есть класс с «массивом из массива» частный член представлены в виде:C++ станд :: копия станда :: Deque к StD:; установить
std::deque<std::deque<SomeClass> > someArray_;
Кроме того, этот класс общедоступного метода, который позволяет получить все уникальные экземпляры SomeClass
, содержащие в someArray_
. Уникальные для SomeClass
экземпляры означают разные, по крайней мере, один из нескольких членов класса. Я решил использовать для этой цели std::set
. Этот метод прототип, как следующее:
std::set<SomeClass> getAllUniqueInstances() const;
В реализации этого метода я использую следующую конструкцию для заполнения std::set
:
std::set<SomeClass> allUniqueInstances;
for(auto it = std::begin(someArray_); it != std::end(someArray_); ++it){
std::copy((*it).begin(),
(*it).end(),
std::inserter(allUniqueInstances, allUniqueInstances.end()));
}
operator<()
определяется для SomeClass
класса. В результате мой std::set
заселен, но огромное количество экземпляров пропущено. Modyfing operator<()
для SomeClass
класс, изменяет ситуацию, но ломает желаемый порядок сортировки. Как в этом случае std::copy
определяет, является ли значительный экземпляр уникальным?
UPD: исходный код для SomeClass
class SomeClass{
private:
uint32_t from_;
uint32_t to_;
double capacity_;
double flow_;
public:
...
bool operator<(const SomeClass& rhs) const;
...
};
Я хочу SomeClass
экземпляры, которые можно заказать в установленный from_
член:
bool SomeClass::operator<(const SomeClass& rhs) const{
if(this->from_ < rhs.from_)
return true;
return false;
}
Если вы должны были написать 'оператор ==' 'для SomeClass' что бы вы считаете атрибуты, необходимые ? Просто 'from_'? –