我最近发现(不是通过研究发现的,所以如果这是错误的,请告诉我,我会纠正这一点),以下方法可以工作:
std::map<T*, U*> map;
std::cout << map[key_that_is_not_in_map] << std::endl;
// OUTPUT:
// 0
但是很多人建议使用std::map::find(key_.....) != std::map::end()
。
关于后者,是否有使其更安全的东西,或者第一个仅适用于指针键和值?
关于后者,是否有一些使其更安全,或者 首先只适用于指针键和值吗?
是,如果不存在键,则std::map::operator[]
执行插入。而std::map::find
则没有。
来自cppreference.com std::map::find
返回对映射到等价于键的值的引用 密钥,如果尚不存在该密钥,则执行插入操作。