【发布时间】:2019-08-21 03:28:37
【问题描述】:
拿这个 C++ 的 sn-p:
#include <map>
int main() {
std::map<int, int> m1;
m1[1] = 2;
std::map<int, int> m2;
m2[3] = 4;
m1.erase(m2.begin());
return m2.size();
}
在神螺栓上:https://godbolt.org/z/mJBszn
这感觉一定是未定义的行为。那是对的吗?如果是这样,标准的哪一部分是这样说的?
【问题讨论】:
-
它应该给出未定义的行为。因为,在
m1.erase(m2.begin())中,m2.begin()指向的位置对m1无效。
标签: c++ language-lawyer undefined-behavior stdmap