를 사용하여 부스트 다중 인덱스에서 항목을 제거 할 때 나는 다음과 같은 코드가 표준 : : 벡터를 들어, 올바르지 않은 것을 알고 더 일반적으로 모든 STL 컨테이너 : 반복자가 될 필요가일관성 반복자
std::vector<something>::iterator it = array.begin();
for(; it != array.end(); it++) {
...
array.erase(it);
...
}
때문에 지우기 및 요소 후 업데이트 됨. 내가 확인하고 싶습니다
my_index::iterator it = index.get<0>().begin();
for(; it != index.get<0>().end(); it++) {
...
index.erase(it);
...
}
가 잘 다음 단락을 이해하기 :
나는 그것이 부스트 멀티 인덱스에 대해 동일한 있는지 궁금해서, 예를 들면 다음과 같은 올바른 여부 것 문서 : http://www.boost.org/doc/libs/1_51_0/libs/multi_index/doc/tutorial/indices.html#guarantees iterator를 무효화하지 않고 지울 수 있다고 말하는 것 같습니다. 그러나 요소를 삭제하기 때문에 반복 중에 방문해야 할 다른 요소를 현재 반복기의 위치 전에 이동하고 결코 방문 할 수 없는지 확실하지 않습니다 (즉, 반복 중에 일부 요소를 지워서, 나는 여전히 모든 요소들을 통과해야만 하는가?).
감사합니다.
원래 반복기의 복사본을 만들면이 복사본이 유효하다는 의미입니까? 내가 iterator it2 = it; index.erase (it); it = it2; 그것은 효과가있을 것인가? – sunmat
아니요, 어쨌든 복사본을 "지우고"있습니다. 지우는 데 필요한 값으로 매개 변수를 사용한다고 가정 할 수 있습니다. 항상 작동하는 remove_if 알고리즘을 사용해야합니다. – CashCow