败犬日报 2024-12-13
1. 怎么安全的边遍历边删除 map
用迭代器,map::erase
返回删除元素的后一个,所以这么写:it = map.erase(it)
cpp
for (auto it = map.begin(); it != map.end();) {
if (...) {
it = map.erase(it);
} else {
++it;
}
}
2. 带初始化语句的 range base for (C++20)
cpp
for (int i = 0; auto [key, value] : map) { ... }
类似的,if 也可以定义 (C++17)。
for 循环的初始化语句还可以写别名声明 (using) (C++23)。
3. 神经网络相同输入会得到不同计算结果
很多时候不是故意的。
比如多线程的原子加,不能保证加法顺序,会出现误差不一致。