swap函数的例子
2024-08-22 09:11:41
13.31为你的HasPtr类定义一个<运算符,并定义一个HasPtr的vector为这个vector添加一些元素,并对它执行sort。注意何时会调用swap。
#include<iostream>
#include<string>
#include<new>
#include<vector>
#include<algorithm> using namespace std;
class HasPtr
{
friend void swap(HasPtr&,HasPtr&);
public:
HasPtr(const string &s=string()):ps(new string(s)),i(){cout<<"constructer"<<endl;}
HasPtr(const HasPtr &h):i(h.i)
{
cout<<"copy constructer"<<endl;
ps=new string;
*ps=*h.ps;//只拷贝值
}
HasPtr& operator=(HasPtr h)
{
swap(*this,h);
return *this;
}
bool operator<(const HasPtr &h) const
{
return i<h.i;
}
~HasPtr() { delete ps; cout<<"destructer"<<endl;}
private:
string *ps;
int i;
};
void swap(HasPtr &lhs,HasPtr &rhs)
{
cout<<"swap"<<endl;
using std::swap;
swap(lhs.ps,rhs.ps);
swap(lhs.i,rhs.i);
}
int main()
{
HasPtr h;
HasPtr hh(h);
hh=h;
swap(h,hh);
vector<HasPtr> vec={h,hh};
sort(vec.begin(),vec.end());
return ;
}
最新文章
- [LeetCode] Third Maximum Number 第三大的数
- TJI读书笔记10-复用类
- uva 437,巴比伦塔
- C#判断奇偶数的函數
- HTTP会话原理解释与应用
- hibernate[版本四]知识总结
- 怎样向IT行业的朋友说明《圣经》的重要性
- iOS开发那些事儿(一)轮播器
- 中国科学院信息project研究所 第四研究室实习生/应届生招聘
- 【剑指offer】q50:树节点最近的祖先
- 在官网下载了最新版的PHP,解压后的安装包里为什么没有php5isapi.dll这个dll文件?
- js中盒子模型常用的属性你还记得几个?
- (转) Redis学习教程--基本命令
- [开源]MasterChief 快速开发辅助类库
- Web App Checklist
- java学习--构造方法
- Luogu P1020 导弹拦截
- jQuery添加和删除元素
- Guava的SetMultimap
- nginx深入使用
热门文章
- SQLite入门与分析(八)---存储模型(1)
- Ember.js demo4
- php 模拟斗地主发牌简单易懂
- POJ1699Best Sequence(DFS)
- SharePoint 2010 WSP包部署过程中究竟发生什么?
- Scheme Implementations对比
- POJ 3254 (状态压缩DP)
- python调用系统命令 shell命令
- ORM Entities vs. Domain Entities under Entity Framework 6.0
- 【CSS】Beginner3:Color