Баг с std::map или что я делаю неправильно?

Приветствую,

Помогите пожалуйста, столкнулся с непонятным поведением std::map в MSVC 2010

для примера приведу такой код:
#include <map>
#include <stdio.h>
#include <Windows.h>

int main()
{
	std::map<char*,int> MAP;
	MAP["a"] = 42;
	char key[10];
	scanf("%s",&key);
	printf("%s:%d\n",key,MAP[key]);
	printf("%d",MAP["a"]);
	system("pause");
}


если мы попробуем получить элемент map'а с ключем полученным к примеру из стандартного потока ввода(берем предопределенный в коде «a»), то получим, это он является совсем другим элементом, но при этом (strcmp(key,«a») == 0), при этом можно учесть, конечно, что «a» имеет тип const char *, но даже MAP[(char *)«a»] не даёт желаемого результата, ЧЯДНТ?
  • Вопрос задан
  • 4802 просмотра
Решения вопроса 1
@gribozavr
У вас ключ map — указатель, а не строка. Используйте std::string в качестве ключа или пишите кастомный компаратор для map.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы