Элементы на карте переопределяются после использования map.find()C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Элементы на карте переопределяются после использования map.find()

Сообщение Anonymous »

Я реализую кэш LRU для решения проблемы, когда мне нужно хранить пары ключ-значение.
Я сохраняю значения в связанном списке, который представляет собой очередь в порядке большинства недавно получен доступ, и я сохраняю ключ и указатель на узел значения в 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Элементы на карте переопределяются после использования map.find() [закрыто]
    Anonymous » » в форуме C++
    0 Ответы
    27 Просмотры
    Последнее сообщение Anonymous
  • Переопределяются ли внутренние функции каждый раз, когда вызывается их родительская функция?
    Anonymous » » в форуме Python
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Ширина и высота холста React-three/fiber переопределяются, и я не знаю, почему
    Anonymous » » в форуме CSS
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous
  • Когда я использую HashMap в Java, все мои значения переопределяются
    Anonymous » » в форуме JAVA
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Переменные CSS не переопределяются родителями
    Anonymous » » в форуме CSS
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»