C++ 如何删除vector中的结构体元素

2025-04-07 06:49:53
推荐回答(1个)
回答1:

#include 
#include 
#include 
#include 
using namespace std;

typedef struct rect //定义结构体
{
    int id;
    int length;
    int width;
    rect(int i,int l ,int w):id(i),length(l),width(w){};
} Rect;

int main()
{
    Rect rect(1,2,3);        
    vector vec(2,rect);//定义一个含有2个元素rect的vec容器
    Rect rect2(3,3,4);    
    vec.push_back(rect2);
    Rect rect3(4,5,7);    
    vec.push_back(rect3);
    Rect rect4(6,3,4);    
    vec.push_back(rect4);

    /**********************删除前遍历输出****************************/
    for(vector::iterator it=vec.begin();it!=vec.end();++it){
        cout<<(*it).id<<','<<(*it).length<<','<<(*it).width<        }  
    /**********************删除****************************/
    for(vector::iterator it=vec.begin();it!=vec.end();){
        Rect temp=*it;
        if(temp.id==4){
            it=vec.erase(it); //删除元素,返回值指向已删除元素的下一个位置                
        }
        else
            ++it;     
    }
    cout<<"/***********split*************/"<    /**********************删除后遍历输出***************************/
    for(size_t i=0;i!=vec.size();++i){
        cout<    }

    return 0;

}