Sha*_*thi 0 c++ dictionary stl ordered-map
int main(){
map<int, int> m;
m.insert({1,2});
m.insert({2,3});
m.insert({5,10});
m.erase(m.find(3));
for(auto &x: m){
cout<<x.first<<" "<<x.second<<nl;
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
1 2
5 10
Run Code Online (Sandbox Code Playgroud)
据我所知,m.find(3)将迭代器返回到m.end()if 键未找到。那为什么要删除 {2,3} 对呢?
该对被删除,因为您违反了先决条件 std::map::erase
Run Code Online (Sandbox Code Playgroud)iterator erase( const_iterator pos ); iterator erase( iterator pos );迭代器 pos 必须有效且可取消引用。因此 end() 迭代器(它是有效的,但不可解引用)不能用作 pos 的值。
违反标准库函数的先决条件具有未定义的行为。所以删除一个看似随机的元素完全符合这一点。
| 归档时间: |
|
| 查看次数: |
70 次 |
| 最近记录: |