注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

告别迷茫

梦想与现实的差距,就是我们生活的意义。因为我们有差距,我们才会一直积累,在努力。

 
 
 

日志

 
 

18-7 自己的wrong C++11的 list 储存的是一个对象 电话薄  

2014-04-14 00:22:44|  分类: STL 基本的用法 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

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

template <typename T>
void DisplayContents (const T& Input)
{
for(auto iElement = Input.cbegin() // auto, cbegin and cend: c++11
; iElement != Input.cend()
; ++ iElement )
cout << *iElement << endl;

cout << endl;
}

struct ContactItem
{
string strContactsName;
string strPhoneNumber;
string strDisplayRepresentation;

// Constructor and destructor
ContactItem (const string& strName, const string & strNumber)
{
strContactsName = strName;
strPhoneNumber = strNumber;
strDisplayRepresentation = (strContactsName + ": " + strPhoneNumber);
}

// used by list::remove() given contact list item
bool operator == (const ContactItem& itemToCompare) const
{
return (itemToCompare.strContactsName == this->strContactsName);
}

// used by list::sort() without parameters
bool operator < (const ContactItem& itemToCompare) const
{
return (this->strContactsName < itemToCompare.strContactsName);
}

// Used in DisplayContents via cout
operator const char*() const
{
return strDisplayRepresentation.c_str();
}
};

bool SortOnPhoneNumber (const ContactItem& item1,
const ContactItem& item2)
{
return (item1.strPhoneNumber < item2.strPhoneNumber);
}

int main ()
{
list <ContactItem> Contacts;
Contacts.push_back(ContactItem("Jack Welsch", "+1 7889 879 879"));
Contacts.push_back(ContactItem("Bill Gates", "+1 97 7897 8799 8"));
Contacts.push_back(ContactItem("Angela Merkel", "+49 23456 5466"));
Contacts.push_back(ContactItem("Vladimir Putin", "+7 6645 4564 797"));
Contacts.push_back(ContactItem("Manmohan Singh", "+91 234 4564 789"));
Contacts.push_back(ContactItem("Barack Obama", "+1 745 641 314"));

cout << "List in initial order: " << endl;
DisplayContents(Contacts);

Contacts.sort();
cout << "After sorting in alphabetical order via operator<:" << endl;
DisplayContents(Contacts);

Contacts.sort(SortOnPhoneNumber);
cout << "After sorting in order of phone numbers via predicate:" << endl;
DisplayContents(Contacts);

cout << "After erasing Putin from the list: ";
Contacts.remove(ContactItem("Vladimir Putin", ""));
DisplayContents(Contacts);

return 0;
}
List in initial order:
Jack Welsch: +1 7889 879 879
Bill Gates: +1 97 7897 8799 8
Angela Merkel: +49 23456 5466
Vladimir Putin: +7 6645 4564 797
Manmohan Singh: +91 234 4564 789
Barack Obama: +1 745 641 314

After sorting in alphabetical order via operator<:
Angela Merkel: +49 23456 5466
Barack Obama: +1 745 641 314
Bill Gates: +1 97 7897 8799 8
Jack Welsch: +1 7889 879 879
Manmohan Singh: +91 234 4564 789
Vladimir Putin: +7 6645 4564 797

After sorting in order of phone numbers via predicate:
Barack Obama: +1 745 641 314
Jack Welsch: +1 7889 879 879
Bill Gates: +1 97 7897 8799 8
Angela Merkel: +49 23456 5466
Vladimir Putin: +7 6645 4564 797
Manmohan Singh: +91 234 4564 789

After erasing Putin from the list: Barack Obama: +1 745 641 314
Jack Welsch: +1 7889 879 879
Bill Gates: +1 97 7897 8799 8
Angela Merkel: +49 23456 5466
Manmohan Singh: +91 234 4564 789


--------------------------------
Process exited with return value 0
Press any key to continue . . .


  评论这张
 
阅读(3)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017