C++ 为什么std::next在feed开始时被卡住
这段代码卡住了。有人能提供线索吗C++ 为什么std::next在feed开始时被卡住,c++,stl,iterator,std,next,C++,Stl,Iterator,Std,Next,这段代码卡住了。有人能提供线索吗 map<int,char> m; auto begin=m.begin() // {first=0, second=0, '\000'} auto end=m.end() // {first=0, second=0, '\000'} auto it=std::next(m.begin(),1); // it stucked map-m; 自动开始=m.begin()/{first=0,second=0,'\000'} auto end=m.end(
map<int,char> m;
auto begin=m.begin() // {first=0, second=0, '\000'}
auto end=m.end() // {first=0, second=0, '\000'}
auto it=std::next(m.begin(),1); // it stucked
map-m;
自动开始=m.begin()/{first=0,second=0,'\000'}
auto end=m.end()/{first=0,second=0,'\000'}
auto it=std::next(m.begin(),1);//它嘎嘎作响
不能对无效迭代器或指向end()
的迭代器调用std::next
。这是未定义的行为。不能对无效迭代器或指向end()
的迭代器调用std::next
。这是未定义的行为。你说的“卡住”是什么意思?无论如何,我认为不允许您增加.end()
迭代器(它会导致UB)。您希望它做什么?您所说的“卡住”是什么意思?无论如何,我不认为你可以增加一个.end()
迭代器(它会导致UB)。你希望它做什么?嗯,听起来有点奇怪。不能stl
为std::next
的末端迭代器做点什么吗?当然,它可以做点什么。这是未定义的行为。它可能“卡住”,它可能会使你的程序崩溃,它可能会重新格式化你的硬盘,…嗯。听起来有点奇怪。不能stl
为std::next
的末端迭代器做点什么吗?当然,它可以做点什么。这是未定义的行为。它可以“卡住”,它可以使你的程序崩溃,它可以重新格式化你的硬盘。。。。。