调用2个参数版本的std::list::erase
将列表的结尾作为两个参数传递是否安全?
std::list<int> values;
values.push_back(4);
values.erase(values.end(), values.end());
当然,我期望values.erase(values.end(), values.end());
的行为无效,但是我不确定C ++ 11规范是否能确保这一点。
答案 0 :(得分:4)
将空范围传递给std::list::erase是安全的。
删除范围内的元素[first;最后一个)。
如果
first
:删除空范围是无操作,则迭代器first==last
不需要可解除引用。