diff --git a/core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp b/core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp
index c422110..f3c65f3 100644
--- a/core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp
+++ b/core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp
@@ -159,10 +159,9 @@
     const std::vector<ByteString>& keys_to_restore,
     CPDF_PageObjectHolder::RemovedResourceMap& saved_resource_map) {
   for (const ByteString& key : keys_to_restore) {
-    auto it = saved_resource_map.find(key);
-    CHECK(it != saved_resource_map.end());
-    resource_dict->SetFor(key, std::move(it->second));
-    saved_resource_map.erase(it);
+    auto node = saved_resource_map.extract(key);
+    CHECK(!node.empty());
+    resource_dict->SetFor(node.key(), std::move(node.mapped()));
   }
 }
 
diff --git a/core/fpdfapi/parser/cpdf_dictionary.cpp b/core/fpdfapi/parser/cpdf_dictionary.cpp
index 01fa53d..de35427 100644
--- a/core/fpdfapi/parser/cpdf_dictionary.cpp
+++ b/core/fpdfapi/parser/cpdf_dictionary.cpp
@@ -303,13 +303,12 @@
 
 RetainPtr<CPDF_Object> CPDF_Dictionary::RemoveFor(ByteStringView key) {
   CHECK(!IsLocked());
-  RetainPtr<CPDF_Object> result;
   auto it = map_.find(key);
-  if (it != map_.end()) {
-    result = std::move(it->second);
-    map_.erase(it);
+  if (it == map_.end()) {
+    return RetainPtr<CPDF_Object>();
   }
-  return result;
+  auto node = map_.extract(it);
+  return std::move(node.mapped());
 }
 
 void CPDF_Dictionary::ReplaceKey(const ByteString& oldkey,
diff --git a/fpdfsdk/formfiller/cffl_formfield.cpp b/fpdfsdk/formfiller/cffl_formfield.cpp
index 1d16e50..3409630 100644
--- a/fpdfsdk/formfiller/cffl_formfield.cpp
+++ b/fpdfsdk/formfiller/cffl_formfield.cpp
@@ -28,11 +28,9 @@
 
 void CFFL_FormField::DestroyWindows() {
   while (!maps_.empty()) {
-    auto it = maps_.begin();
-    std::unique_ptr<CPWL_Wnd> pWnd = std::move(it->second);
-    maps_.erase(it);
-    pWnd->InvalidateProvider(this);
-    pWnd->Destroy();
+    auto node = maps_.extract(maps_.begin());
+    node.mapped()->InvalidateProvider(this);
+    node.mapped()->Destroy();
   }
 }
 
@@ -412,14 +410,11 @@
 }
 
 void CFFL_FormField::DestroyPWLWindow(const CPDFSDK_PageView* pPageView) {
-  auto it = maps_.find(pPageView);
-  if (it == maps_.end()) {
+  auto node = maps_.extract(pPageView);
+  if (node.empty()) {
     return;
   }
-
-  std::unique_ptr<CPWL_Wnd> pWnd = std::move(it->second);
-  maps_.erase(it);
-  pWnd->Destroy();
+  node.mapped()->Destroy();
 }
 
 CFX_Matrix CFFL_FormField::GetWindowMatrix(
