Итак, вместо массива я решил использовать мультимап, чтобы я мог хранить повторяющиеся значения вместе с некоторым другим значением (которое действует как пара). Так что, когда я объявил мульти-карту какmultimap less_equal, приводящий к неправильным результатам поиска()
multimap<int,int,less_equal<int> > M;
multimap<int,int,less_equal<int> >::iterator it,it2;
А затем вставили все элементы в нем, говорят
(10,1), (2,2), (8,3), (2,2), (8,1)
, а затем итерацию через него, я получил то, что я желал:
2 2
2 2
8 1
8 3
10 1
Но теперь функция поиска просто не работает Как, если я хочу найти номер, скажем
it2=M.find(temp);
где temp - некоторое значение, которое существует в мультимаре, скажем 8, оно просто игнорирует его и не находит его! Функция find работала, когда я не включал less_equal, но поскольку это то, что я хочу в своей программе, теперь я борюсь с моим кодом. Может ли кто-нибудь предложить средство для этого? Как причина, почему поиск не работает правильно?
Подумайте об этом следующим образом: ТОЛЬКО действительный способ сравнения ключей состоит в использовании оператора, с которым вы проходите. Таким образом, ключ равен iff (! (Compare (a, b) || compare (b, a)) Как правило, сравнительный элемент, который вы проходите, меньше, поэтому вы получаете (! ((A IdeaHat