c ++ STL map copy устанавливает булево значение true - PullRequest
0 голосов
/ 17 октября 2010

У меня проблема с картой STL. Сначала я заполняю карту такими данными.

//loop
pair< int, int > xy (x,y);
currentMap.insert( make_pair(xy), value); //map< pair<int, int>, bool>
prevMap.insert( make_pair(xy), value);
// End Loop

Затем я удаляю элемент согласно некоторым правилам.

currentMap.erase( make_pair(xy) );

Позже я сделаю обмен двумя объектами карты.

prevMap = currentMap;

После перестановки всем элементам присваивается значение true. Если я ищу элемент xy ... * изменить - я опередил себя. К сожалению.

i = currentMap.find( make_pair(xy) );
return i->second; // Always true after swap.

Истина всегда будет оцениваться как Истина. Будет ли инициализация карты устанавливать значение bool в true? Могу ли я инициализировать со всеми bools на false.

Спасибо.

1 Ответ

1 голос
/ 17 октября 2010

Вы не можете инициализировать значения карты ни к чему.Вы можете вставить значения только вместе с ключом.Ваш последний фрагмент кода должен выглядеть следующим образом, если вы хотите вернуть false, если ключ отсутствует:

i = currentMap.find( make_pair(xy) );
if (i != currentMap.end())
    return i->second;
return false;
...