Study/에러 정리

STL std::map에서 키 값 체크

Juzdalua 2024. 9. 10. 16:58

std::map을 사용하던 도중 아래 에러를 맞이했다.

std::_Tree_unchecked_iterator<std::_Tree_val<std::_Tree_simple_types...

 

원인-> std::map에서 존재하지 않는 키에 접근하면, 새로운 엔트리가 자동으로 추가된다.

map<uint64, PlayerRef> _players;

lock_guard<mutex> lock(_lock);
if (_players[targetPlayerId] != nullptr) // null체크를 함과 동시에 데이터 삽입
{
	_players[targetPlayerId]->GetOwnerSession()->Send(sendBuffer);
}

 

pair->second가 비어있는 값


STL std::map을 사용할 때에는 키가 있는지 확인하는 find 메소드를 먼저 사용하자.

auto it = _players.find(targetPlayerId);
if (it != _players.end() && it->second != nullptr)
{
	it->second->GetOwnerSession()->Send(sendBuffer);
}