Если ваш объект Flight реализует Comparable, и вы можете установить собственную логику для сравнения нужных полей, тогда вы можете просто использовать функцию Arrays.sort (). Смотрите здесь пример: https://www.tutorialspoint.com/java/util/arrays_sort_super.htm
Да Вы не можете использовать operator[]
. Использовать find
, но обратите внимание, что это возвращается const_iterator
вместо iterator
:
std::map<std::string, std::string>::const_iterator it;
it = map.find(name);
if(it != map.end()) {
std::string const& data = it->second;
// ...
}
Это похоже с указателями. Вы не можете присвоиться int const*
кому: int*
. Аналогично, Вы не можете присвоиться const_iterator
кому: iterator
.
Когда Вы используете оператор [], станд.:: карта ищет объект с данным ключом. Если это не находит никого, это создает его. Следовательно проблема с константой.
Используйте находят метод, и Вы будете в порядке.
Можно ли понравиться почтовому индексу о том, как Вы пытаетесь использовать, находят ()? Правильный путь был бы:
if( map.find(name) != map.end() )
{
//...
}
Поскольку Ваша "константа не соответствовала ошибкам итератора":
найдите (), имеет две перегрузки:
iterator find ( const key_type& x );
const_iterator find ( const key_type& x ) const;
Мое предположение - то, что Вы получаете эту ошибку, потому что Вы делаете что-то как присвоение итератора неконстанты (слева) к результату a find()
запрос a const
карта:
iterator<...> myIter /* non-const */ = myConstMap.find(...)
Это привело бы к ошибке, хотя, возможно, не тот Вы видите.
Вероятно, потому что нет никакого оператора константы [] в станд.:: карта. оператор [] добавит элемент, который Вы ищете, если он не находит его. Поэтому используйте находку () метод, если Вы хотите искать без возможности добавления.