void item::remove() { //Remove the entry in map that points to current tuple item_map_t::iterator item_map_iter; item_map_iter=item_map.find(make_tuple(i_id)); item_map.erase(item_map_iter); //Move last tuple in vector in the place of the deleted tuple //If current tuple is not the last tuple, if(tuple_id != count - 1) { //Move content of last tuple to fields in this tuple item item_vect_last_iter; item_vect_last_iter=item_vect.at(count - 1); i_id = item_vect_last_iter.i_id; i_im_id = item_vect_last_iter.i_im_id; strcpy(i_name, item_vect_last_iter.i_name); i_price = item_vect_last_iter.i_price; strcpy(i_data, item_vect_last_iter.i_data); //Remove the entry for the last tuple in map, and insert a new one with new tuple_id item_map_t::iterator item_map_iter; item_map_iter=item_map.find(make_tuple(i_id)); if(item_map_iter != item_map.end()) item_map.erase(item_map_iter); item_map.insert(make_pair(make_tuple(i_id), tuple_id));; //Call remove on the last entry of the vector item_vect_last_iter.remove(); } else { //if the tuple is the last tuple in the vector count--; item_vect.pop_back(); } //item_vect.erase(tuple_id); }
// Removes an entry (all entries are unique) BOOL LLEmbeddedItems::removeEmbeddedItem( llwchar ext_char ) { mEmbeddedUsedChars.erase(ext_char); item_map_t::iterator iter = sEntries.find(ext_char); if (iter != sEntries.end()) { sEntries.erase(ext_char); sFreeEntries.push(ext_char); return TRUE; } return FALSE; }