删除Vector 结构体元素相同的,保留后面一个
2017-03-02 08:14
393 查看
#include <stdio.h> #include <memory.h> #include <string> #include <iostream> #include <opencv2/opencv.hpp> #include <windows.h> #include <shellapi.h> #include <shlwapi.h> #include <wininet.h> #include <time.h> #include <algorithm> using namespace std; struct link { string a; string b; bool operator <(const link& rhs) const { if(a!=rhs.a) return a <rhs.a; return b <rhs.b; } bool operator==(const link& rhs) const { return a == rhs.a; } }; int main( int argc, char** argv ) { vector <link> LinkV; link lk; lk.a="tiantain"; lk.b="zeze"; LinkV.emplace_back(lk); lk.a="niuniu"; lk.b="doudou"; LinkV.emplace_back(lk); lk.a="niuniu"; lk.b="maomao"; LinkV.emplace_back(lk); //sort(LinkV.begin(),LinkV.end()); // LinkV.erase(unique(LinkV.begin(),LinkV.end()), LinkV.end()); cout<<"原内容"<<endl; for(int i=0; i<LinkV.size(); i++) { cout<<LinkV[i].a<<" "<<LinkV[i].b<<endl; } vector <link> reLinkV; vector<link>::reverse_iterator it= LinkV.rbegin(); for (it = LinkV.rbegin(); it != LinkV.rend(); ++it) // decrements iterator one element { //cout << it->a <<" "<<it->b<<endl; lk.a = it->a; lk.b = it->b; reLinkV.emplace_back(lk); } cout<<endl; reLinkV.erase(unique(reLinkV.begin(),reLinkV.end()), reLinkV.end()); for(int i=0; i<reLinkV.size(); i++) { //cout<<reLinkV[i].a<<" "<<reLinkV[i].b<<endl; } //再反回来,存入原来的容器中,原来的容器要清空下 LinkV.clear();//原来的容器要清空下 for (it = reLinkV.rbegin(); it != reLinkV.rend(); ++it) //把处理后的数据再重新放入之前的容器中 { //cout << it->a <<" "<<it->b<<endl; lk.a = it->a; lk.b = it->b; LinkV.emplace_back(lk); } cout<<"处理后的内容"<<endl; for(int i=0; i<LinkV.size(); i++) { cout<<LinkV[i].a<<" "<<LinkV[i].b<<endl; } return 0; }
结果:
相关文章推荐
- php删除数组中相同的元素,只保留一个相同元素
- 删除vector 某个结构体元素相同的内容
- NSMutableArray和NSArray删除相同元素并只保留一个的方法
- STL中vector删除一个元素
- 增加原型方法写出删除一个数组相同元素的函数
- vector数组中删除相同元素(输入的元素输出时只能出现一次)
- jquery实现删除一个元素后面的所有元素功能
- 在vector中删除一个元素
- C++ vector 删除一个指定元素 和 find 一个指定元素
- 已知两个链表 la和 lb,其元素值递增排序。编程将la和lb合并成一个递减有序(相同值元素只保留一个)的链表lc。(北方名校经典试题) 本题选做
- 关于如何在vector中的某些元素(这些元素均是相同的值)之前插入一个特定的值
- 在vector中删除一个元素(转)
- 在一个长度为10的整形数组中,已经放置好了任意10个整数。要求用户任意输入 一个整数,判断该数字是否在数组中。如果在,删除数组中该元素,并把后面的 元素往前挪。(让空出的位置在最后)
- js中 在数组中删除重复的元素(自保留一个)
- 简单实现遍历vector 删除所有相同的元素
- 网新恒天笔试题,有两个整形数组A和B,请编程去除这两个数组间的交集。若有相同元素,则在相同元素较多的数组中保留它。例如,数组A有三个1,数组B有两个1,程序将删除数组B中的两个1.
- 删除2个非递增链表相同的元素,并且合并为一个非递增链表
- js在数组中删除重复的元素自保留一个(两种实现思路)
- 华为 2015 机试 输出:数字后面的连续出现的(2个或多个)相同字符(数字或者字符),删去一个,非数字后面的不要删除,例如,对应输出为:33aabb55pin。
- jquery如何删除一个元素后面的所有元素