STL中vector自定义对象的排序、删除

来源:互联网 发布:乌鸦森林之谜 mac 编辑:程序博客网 时间:2024/04/19 09:12


做个笔记,记忆学习之路

流程如下:

1、首先定义结构体对象,包括重载它的operator<运算符

2、创建对象并加入到数组中,然后调用stl的排序函数,并指定排序的依据

3、删除自定义类型中指定元素值得元素

1、定义

struct StructStu{int _num1;int _num2;int _num3;StructStu(int num1,int num2,int num3){_num1 = num1;_num2 = num2;_num3 = num3;}bool operator<(const StructStu &right) const{return _num3 < right._num3;}};

2、排序

std::vector<StructStu> structStuVec;StructStu stu1(1,2,3);StructStu stu2(2,3,4);StructStu stu3(3,4,5);StructStu stu4(3,4,6);structStuVec.push_back(stu3);structStuVec.push_back(stu4);structStuVec.push_back(stu1);structStuVec.push_back(stu2);sort(structStuVec.begin(),structStuVec.end(),less<StructStu>());

3、删除指定值得元素

for (auto stuIter = structStuVec.begin(); stuIter != structStuVec.end();){if(stuIter->_num2 == 4){stuIter = structStuVec.erase(stuIter);}else{stuIter++;}}
找到指定的元素后,将它从structStuVec中删除对象后,返回下一个可用的元素迭代器,继续作比较。

若找不到指定的元素则迭代至下一个紧挨着的元素,这样就能把我们指定元素值给删除了




0 0