Я сохраняю значения в связанном списке, который представляет собой очередь в порядке большинства недавно получен доступ, и я сохраняю ключ и указатель на узел значения в unordered_map типа . Я делаю это, чтобы обеспечить постоянную временную сложность для всех методов в кеше.
Итак, в методе put моего класса я проверяю, есть ли ключ уже присутствует на моей карте
if (mymap.find(key) != mymap.end())
Проблема в следующем: -
- Значение этого выражения всегда возвращает true
- Значение ключа, которое я проверяю, добавляется на карту
< /ul>
например, на карте есть - если я попытаюсь вставить , он переходит к «найденному на карте», даже если ключ 2 отсутствует на карте.
- и вместо на всей карте есть только .
void put(int key, int value) {
Node* temp;
cout prev = mymap[key]->prev;
end->next = mymap[key];
mymap[key]->prev = end;
end = mymap[key];
} else {
cout key);
temp = start;
start = start->next;
if (start != NULL)
start->prev = NULL;
delete temp;
cap++;
}
if (start == NULL) {
start = end = new Node(key, value);
mymap[key] = end;
cap--;
} else {
end->next = new Node(key, value, end);
end = end->next;
mymap[key] = end;
cap--;
}
}
cout prev = temp;
mymap[key]->next = NULL;
}
for (auto node : mymap) {
cout next->prev = mymap[key]->prev;
end->next = mymap[key];
mymap[key]->prev = end;
end = mymap[key];
} else {
cout key);
temp = start;
start = start->next;
if (start != NULL)
start->prev = NULL;
delete temp;
cap++;
}
if (start == NULL) {
start = end = new Node(key, value);
mymap[key] = end;
cap--;
} else {
end->next = new Node(key, value, end);
end = end->next;
mymap[key] = end;
cap--;
}
}
cout get(key);
* obj->put(key,value);
*/
Подробнее здесь: https://stackoverflow.com/questions/785 ... g-map-find