C++ 在迭代时使用 HashMap 中的键删除条目
本教程将讨论如何在遍历时使用键从HashMap中删除条目。例如,
Input: HashMap: { 1: “Tutorials”, 2: “Tutorials”, 3: “Point” }, key=1 Output: HashMap: { 2: “Tutorials”, 3: “Point” }. Explanation: The first element is removed using key ‘1’. Input: HashMap: { 1: “God”, 2: “is”, 3: “Great” }, key=2 Output: HashMap: { 1: “God”, 3: “Great” }.
寻找解决方案的方法
在C++中,我们可以在.erase()函数使用键删除条目。但是在这里,我们需要在迭代时将其删除,因此我们也需要一个迭代器。
在这里,我们将遍历hashmap并检查是否每个键都被删除,并在键匹配时删除条目。
示例
上述方法的C++代码
无迭代
下面是在不迭代HashMap的情况下删除元素的代码。
#include<iostream> #include<map> //用于映射操作 using namespace std; int main(){ //创建哈希映射。 map< int, string > mp; //在Hashmap中插入键值对。 mp[1]="Tutorials"; mp[2]="Tutorials"; mp[3]="Point"; int key = 2; //创建迭代器。 map<int, string>::iterator it ; //打印初始Hashmap。 cout<< "HashMap before Deletion:\n"; for (it = mp.begin(); it!=mp.end(); ++it) cout << it->first << "->" << it->second << endl; mp.erase(key); //删除后打印Hashmap。 cout<< "HashMap After Deletion:\n"; for (it = mp.begin(); it!=mp.end(); ++it) cout << it->first << "->" << it->second << endl; return 0; }输出结果
HashMap before Deletion: 1->Tutorials 2->Tutorials 3->Point HashMap After Deletion: 1->Tutorials 3->Point
示例
迭代HashMap时删除元素
#include<iostream> #include<map> //用于映射操作 using namespace std; int main(){ //创建哈希映射。 map< int, string > mp; //在Hashmap中插入键值对。 mp[1]="Tutorials"; mp[2]="Tutorials"; mp[3]="Point"; int key = 2; //创建迭代器。 map<int, string>::iterator it ; //打印初始Hashmap。 cout<< "HashMap before Deletion:\n"; for (it = mp.begin(); it!=mp.end(); ++it) cout << it->first << "->" << it->second << endl; //迭代HashMap。 for (it = mp.begin(); it!=mp.end(); ++it){ int a=it->first; //使用所需的密钥检查迭代器密钥。 if(a==key){ //擦除元素。 mp.erase(it); } } //删除后打印Hashmap。 cout<< "HashMap After Deletion:\n"; for (it = mp.begin(); it!=mp.end(); ++it) cout << it->first << "->" << it->second << endl; return 0; }输出结果
HashMap before Deletion: 1->Tutorials 2->Tutorials 3->Point HashMap After Deletion: 1->Tutorials 3->Point
结论
在本教程中,我们讨论了如何从所HashMap.We讨论的删除条目的两种方法中删除条目,这些方法是迭代它和不迭代它。我们还讨论了针对这个问题的C++程序,我们可以使用C、Java、Python等编程语言来解决这个问题。我们希望本教程对您有所帮助。