나는 std::vector<Bullet> bullets
을 가지고 있으며 for-loop 아래에서 더 이상 살아 있지 않다면 벡터에서 총알을 제거하고 싶습니다.벡터에서 std :: vector :: iterator의 인덱스는 무엇입니까?
나의 계획은 pop_back()
으로 요소를 제거하는 것입니다. 벡터에 하나 이상의 요소가있는 경우 먼저 벡터의 마지막 요소로 제거 할 요소를 교환하고 pop_back()
을 호출합니다.
for (std::vector<Bullet>::iterator b = bullets.begin(); b != bullets.end(); ++b) {
if(!b->isAlive()) {
if (bullets.size() > 1) {
std::iter_swap(bullets + ..., bullets.end());
}
bullets.pop_back();
}
}
문제는 iter_swap
의 첫 번째 매개 변수입니다. 나는 http://www.cplusplus.com/reference/algorithm/iter_swap/을 찾고 첫 번째 매개 변수의 구문은 벡터 + 요소의 위치입니다.
벡터에서 b
의 색인을 어떻게 찾을 수 있습니까?
어느 것이 든 누락되었거나 첫 번째 요소에 대해 * 반복기가 필요하며 이미 올바른 반복기가 있습니다 :'b'. – delnan
왜'swap()'과'pop_back()'대신'std :: remove()'또는'std :: erase()'를 사용하지 않는 것이 좋을까요? – CoryKramer
@Cyber 스왑 앤 팝은 일정 시간이 걸리는 반면 선형 시간은 걸리기 때문입니다. – delnan