vector<int> v = { 1,2,3,4,5 };
for (auto beg = v.begin(); beg != v.end();++beg)
{
if (beg == v.begin())
v.push_back(50);
}
런타임 동안 "벡터 반복기가 증가 할 수 없음"이라고 표시됩니다.
언급했듯이 std::vector::push_back()
반복자를 무효화 할 수 있습니다. 가능하지만 매우 추악한 해결책은 다음과 같습니다.
for (auto beg = v.begin(); beg != v.end();++beg)
{
if (beg == v.begin()) {
v.push_back(50);
beg = v.begin();
}
}
하지만 당신의 논리는 복잡해 보입니다. 왜 루프 바로 전에 뒤로 밀지 않습니까?
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다