插入
如何判断数据是否插入成功?
insert函数的返回值类型为:Pair<map<int,string>::iterator,bool>
返回值的key值表示,返回map的迭代器
返回值的value值表示,是否插入成功
所以,咱们可使用如下代码来判断,map键值对是否插入成功指
#include <iostream>
#include <map>
int main() {
std::map<int, std::string> myMap;
// 插入键值对
std::pair<std::map<int, std::string>::iterator, bool> result = myMap.insert(std::make_pair(1, "one"));
if (result.second) {
std::cout << "Insertion successful." << std::endl;
} else {
std::cout << "Insertion failed. Key already exists." << std::endl;
}
return 0;
}
C++中使用map时可能会遇到重复insert同一个key的情况
这个时候新的值不会覆盖原有的值,而是会忽略这次insert
如果需要修改某个key的值,可以使用赋值的方式
map[key]=value
取值
直接用下表即可:
cout << map[1] << endl;
查找
方法一:
用 count 函数判断是否为 0
判断是否有值
if(map.count(key) == 0)
...
方法二:
用 find 方法判断是否读取到了 end
// map::find
#include <iostream>
#include <map>
int main ()
{
std::map<char,int> mymap;
std::map<char,int>::iterator it;
mymap['a']=50;
mymap['b']=100;
mymap['c']=150;
mymap['d']=200;
it = mymap.find('b');
if (it != mymap.end())
mymap.erase (it);
// print content:
std::cout << "elements in mymap:" << '\n';
std::cout << "a => " << mymap.find('a')->second << '\n';
std::cout << "c => " << mymap.find('c')->second << '\n';
std::cout << "d => " << mymap.find('d')->second << '\n';
return 0;
}
一个比较完整的例子
#include <map>
#include <string>
#include <iostream>
using namespace std;
map<int, string> mapStudent;
void my_find(int key)
{
if (mapStudent.count(key) != 0) {
cout << "idx " << key << " has value: " << mapStudent[key] << endl;
} else {
cout << "idx " << key << " not found" << endl;
}
}
int main(int argc, char **argv)
{
mapStudent.insert(pair<int, string>(1, "student_one"));
mapStudent.insert(pair<int, string>(2, "student_two"));
mapStudent.insert(pair<int, string>(3, "student_three"));
map<int, string>::iterator iter;
for(iter = mapStudent.begin(); iter != mapStudent.end(); iter++) {
cout << iter->first << " "<< iter->second << endl;
}
my_find(1);
my_find(2);
my_find(3);
my_find(4);
return 0;
}