小编tap*_*ron的帖子

std :: unique并从对象容器中删除重复项

我想知道是否有一种有效的方法可以根据对象的成员字段值从容器中删除对象.例如,我可以使用stl :: unique和字符串列表执行以下操作:

#include<iostream>
#include<list>
#include<string>
#include<algorithm>
using namespace std;

bool stringCompare(const string & l, const string & r)                                                                                   
{                                                                                                                                    
   return (l==r);                                                                                                                         
}

int main()                                                                                                                               
{                                                                                                                                        

  list<string> myStrings;                                                                                                                
  myStrings.push_back("1001");                                                                                                           
  myStrings.push_back("1001");                                                                                                           
  myStrings.push_back("81");                                                                                                             
  myStrings.push_back("1001");                                                                                                           
  myStrings.push_back("81");                                                                                                             

  myStrings.sort();                                                                                                                      
  myStrings.erase(unique(myStrings.begin(), myStrings.end(), stringCompare), myStrings.end());                                           

  list<string>::iterator it;                                                                                                             
  for(it = myStrings.begin(); it != myStrings.end(); ++it)                                                                               
  {                                                                                                                                      
    cout << *it << endl;                                                                                                                 
  }                                                                                                                                      

  return     0;                                                                                                                              
}
Run Code Online (Sandbox Code Playgroud)

打印1001,81 ......

有没有办法可以用以下代码做类似的事情,或者我是否需要使用运算符"手动"执行比较并迭代容器.我想不出更优雅的解决方案,并想知道如果没有编写大量代码就可以实现这一点.任何帮助都感激不尽!

class Packet
{
public:
Packet(string fTime, string rID) : filingTime(fTime), recordID(rID)

  string getFilingTime() {return filingTime;}
  string getRecordId() {return recordID;}

private: …
Run Code Online (Sandbox Code Playgroud)

c++ stl std

4
推荐指数
2
解决办法
1万
查看次数

标签 统计

c++ ×1

std ×1

stl ×1