面试题答案
一键面试-
方法描述:
- 由于
map
的键不可直接修改,一种安全的方法是先根据旧键找到对应的值,然后删除旧键值对,再插入新键值对,保持值的关联。 - 在这个过程中,需要处理可能出现的异常,例如在删除或插入操作失败时进行适当处理。
- 由于
-
代码示例:
#include <iostream>
#include <map>
#include <string>
void modifyMapKey(std::map<int, std::string>& myMap, int oldKey, int newKey) {
try {
// 查找旧键
auto it = myMap.find(oldKey);
if (it != myMap.end()) {
std::string value = it->second;
// 删除旧键值对
myMap.erase(it);
// 插入新键值对
myMap.insert({newKey, value});
} else {
std::cerr << "旧键未找到" << std::endl;
}
} catch (const std::exception& e) {
std::cerr << "操作出现异常: " << e.what() << std::endl;
}
}
int main() {
std::map<int, std::string> myMap = {{1, "apple"}, {2, "banana"}};
modifyMapKey(myMap, 1, 3);
for (const auto& pair : myMap) {
std::cout << pair.first << ": " << pair.second << std::endl;
}
return 0;
}
在上述代码中:
modifyMapKey
函数接受一个map
、旧键和新键作为参数。- 首先查找旧键,如果找到则获取对应的值,删除旧键值对,然后插入新键值对。
- 如果旧键未找到,输出提示信息。
- 在
try - catch
块中捕获可能出现的异常并输出错误信息。 main
函数中创建一个map
并调用modifyMapKey
函数进行键值修改,最后输出修改后的map
内容。