2012-03-26 2 views
0

나는 다음 사이클이 있습니다표준 벡터 지우고와 push_back

vector<int> vec; 
vector<int>::iterator it; 
// fill the vector with some values. func() is a boolean function on ints. 
// fill_vec() fills a vector of ints with some values. 
for (it = vec.begin(); it != vec.end();) 
{ 
    if (func(*it)) 
    { 
     vector<int> new_vec; 
     fill_vec(new_vec); 
     it = erase(it); 
     for (int j =0 ; j < new_vec.size(); j++) 
      vec.push_back(new_vec[j]); 
    } 
    else 
     it++; 
} 

이 유효한 루프를? 즉, 루프 안의 요소를 올바른 방법으로 지우거나 추가합니까?

답변

0

가장 좋은 방법은 컴파일하고 추적하여 논리를 확인하는 것입니다. 많은 것을 배우게됩니다. 그것이 의미하는대로 나는 그것이 컴파일 될 것이라는 것을 믿지 않으며, 대체 벡터 요소는 아마도 당신이 기대하는 곳에 가지 않을 것입니다. 또한 다른 컨테이너에서 범위를 삽입하려면 vector :: insert()를 확인하십시오.