Регистрация Забыли пароль?
Логин
Пароль
Запомнить меня
Вход через ВКонтакте
Главная > Статьи > Проблемы с map на C++

Проблемы с map на C++

При работе с map на C++ если в виде ключа использовать char* возникают проблемы с нахождением элемента карты по ключу

Суть проблемы в том что тип char это массив символов заканчивающийся нулевым символом, поэтому сравнивать их надо специальными функциями.

Поэтому для правильной работы map надо использовать такую запись map

Пример кода. Внимание! код приведен для примера извлечен из проекта поэтому не факт что скомпилюеться.

// compare function for map
struct MapCharACharACompare {
  bool operator() (const char* lhs, const char* rhs) const {return _stricmp(lhs, rhs) < 0;}
};

map tmpMap;

char* getValue(char* Code) {
 map::iterator el = tmpMap.find(Code);
 if (el != tmpMap.end()) {
   return el->second;
 } else {
   return "";
 }
}

int main() {
 tmpMap["TestKey"] = "TestCode";
 std::cout << "TestKey value = " << getValue("TestCode") << std::endl;
 _getch();
 return 0;
}
Вы можете добавить коментарий на етой странице или на странице форума тут.Постов 5.

Последний комментарий

13.07.2016
This forum needed shkanig up and you've just done that. Great post! http://lndqszr.com [url=http://sdzdwaxddpv.com]sdzdwaxddpv[/url] [link=http://ipqzxvrgpqk.com]ipqzxvrgpqk[/link]
11.07.2016
A perfect reply! Thanks for taking the trulboe.
10.07.2016

Имя*E-mail
Код*