Iteracja kontenera MAP - klucza case-insensitive

0

Z bazy wyłuskuję liste towarów posortowanych alfabetycznie i zapisuje do kontenera MAP (klucz pierwszy - nazwa typu string, klucz drugi - nr typu int).

W trakcie wyłuskiwania tych elementów z kontenera MAP zmienia mi kolejność pobieranych elementów, gdyż w nazwie czasami sa użyte duzę litery w drugim lub jego trzecim członie.

Np.

  1. Piłka nożna footbs1
  2. Piłka nożna Footbs2

W trzecim członie jest użyta raz duża litera, raz mała. Nie mam na to wpływu, użytkownicy różnie to zapisują.
Zapytanie sql to ignoruje i zapisuje do kontenera MAP bez uwzględnienia dużych liter.

Czyli po uruchomieniu zapytania sql mam poprawną kolejność wg. alfabetu:

  1. Piłka nożna footbs1
  2. Piłka nożna Footbs2

Kiedy jednak wyłuskuję z kontenera MAP - standardowa iteracja :

for (Lista::const_iterator ci = siList.beginn(); ci !=siList.End;  ci++), 

uwzględnia on duże litery w trzecim członie i najpierw pobiera "Piłka nożna Footbs2", a później "Piłka nożna footbs1 ". Efektt to zmiana kolejności:

  1. Piłka nożna Footbs2
  2. Piłka nożna footbs1

Żeby to skorygować musze uruchomić dodatkową funkcję sortującą.
Jednak wolałbym jej nie uruchamiać.
Czy istnieje jakiś sposób, by kontener ignorował duże litery w trakcie iteracji, tak jak to robi zapytanie sql?

0

Istnieje - napisać własna funkcję/funktor porównujący i podać go w trzecim parametrze szablonu map.

1 użytkowników online, w tym zalogowanych: 0, gości: 1