Deleting elements from a vector

后端 未结 5 1149
独厮守ぢ
独厮守ぢ 2021-01-23 17:48

The following C++ code fills a vector with a number of objects and then removes some of these objects, but it looks like it deletes the wrong ones:

vector

        
5条回答
  •  天命终不由人
    2021-01-23 18:32

    The proper version will look like:

    for (vector::iterator i=photons.begin(); i!=photons.end(); /*note, how the advance of i is made below*/) {
       bool useless = false;
    
       // process photon, set useless to true for some
    
       // remove useless photons
       if (useless) {
         i = photons.erase(i);
       } else {
         ++i;
       }
    }
    

提交回复
热议问题