首页 > 代码库 > swap函数的例子
swap函数的例子
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(0){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 0;}
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。