지도에 존재하지 않는 키를 찾는 방법이 있습니까?표준 : :지도에서 존재하지 않는 키 찾기
나는 std::map<int,myclass>
을 사용하고 있으며 새 항목의 키를 자동으로 생성하려고합니다. 항목은 삽입 순서와 다른 순서로지도에서 삭제 될 수 있습니다.
myclass 항목은 동일하거나 동일하지 않을 수 있으므로 자신이 키 역할을 할 수 없습니다.
프로그램을 실행하는 동안 생성되고 삭제되는 항목의 수에는 제한이 없으므로 카운터를 키로 사용할 수 없습니다.
동일한 기능과 성능을 가진 대체 데이터 구조가 가능합니다.
내 항목에 대한 컨테이너를 구축을 위해 노력
편집 - I 삭제할 수 있도록/자신의 키에 따라 항목을 수정하고, 나는 항목을 반복 할 수 있습니다. 키 값 자체는 나에게 아무런 의미가 없지만 다른 개체는 내부 용도로 키를 저장합니다.
내가 증분 카운터를 사용할 수없는 이유는 프로그램의 수명 기간 동안 2^32 (또는 이론적으로 2^64) 개 항목이 될 수 있기 때문입니다. 그러나 항목 0은 이론적으로는 여전히 다른 항목은 삭제됩니다.
std :: map에 가장 낮은 값의 미사용 키를 묻는 것이 좋을 것이므로 사용되지 않은 키에 벡터 또는 다른 다른 저장 장치를 사용하는 대신 새 항목에 사용할 수 있습니다.
지도의 항목에 어떻게 액세스 할 계획입니까? 지도 데이터 구조조차 원하지 않는 것 같습니다. 키를 생성 한 다음 계속 키를 사용하여 요소에 액세스 할 수 있습니까? 그리고 어쨌든 열쇠 주위를 지켜야한다면 ... 사용중인 건 어떤 건지 알지 못하니? – Tom
나는 2^64 개 이상의 아이템이있을 것이라고 진심으로 의심한다. –
64 비트 카운터 변수를 사용한다면 괜찮을 것입니다. 이것을 고려하십시오 : 내 컴퓨터에서 변수를 1,000,000,000 번 증가 시키려면 약 2 초가 걸립니다. 즉, 64 비트 정수의 전체 범위를 루프하는 데 적어도 1169 년이 걸릴 것입니다. 이제 3178 년 AD에 인간 문명이 여전히 존재하고 프로그램이 여전히 실행 중이면, (아마도 사이보그) 자손이 응용 프로그램을 다시 시작하면됩니다. –