C++primer 12.1.4节练习
练习12.14
1 #include <iostream> 2 #include <fstream> 3 #include <string> 4 #include <sstream> 5 #include <set> 6 #include <map> 7 #include <algorithm> 8 #include <vector> 9 #include <algorithm> 10 #include <iterator> 11 #include <unordered_map> 12 #include <memory> 13 14 using namespace std; 15 struct destination{}; 16 struct connection{}; 17 connection connect(destination *des); 18 void disconnect(connection c); 19 void f(destination &d); 20 void end_connection(connection *p) { disconnect(*p); } 21 22 int main() 23 { 24 destination d; 25 f(d); 26 system("pause"); 27 return 0; 28 } 29 30 connection connect(destination * des) 31 { 32 cout << "already connect" << endl; 33 return connection(); 34 } 35 36 void disconnect(connection c) 37 { 38 cout << "has been disconnect" << endl; 39 } 40 41 void f(destination &d) 42 { 43 connection c = connect(&d); 44 shared_ptr<connection> p(&c, end_connection); 45 }
练习12.15
1 #include <iostream> 2 #include <fstream> 3 #include <string> 4 #include <sstream> 5 #include <set> 6 #include <map> 7 #include <algorithm> 8 #include <vector> 9 #include <algorithm> 10 #include <iterator> 11 #include <unordered_map> 12 #include <memory> 13 14 using namespace std; 15 struct destination{}; 16 struct connection{}; 17 connection connect(destination *des); 18 void disconnect(connection c); 19 void f(destination &d); 20 void end_connection(connection *p) { disconnect(*p); } 21 22 int main() 23 { 24 destination d; 25 f(d); 26 system("pause"); 27 return 0; 28 } 29 30 connection connect(destination * des) 31 { 32 cout << "already connect" << endl; 33 return connection(); 34 } 35 36 void disconnect(connection c) 37 { 38 cout << "has been disconnect" << endl; 39 } 40 41 void f(destination &d) 42 { 43 connection c = connect(&d); 44 shared_ptr<connection> p(&c, [](connection *p) { disconnect(*p);}); 45 }
复习参数绑定bind
1 #include <iostream> 2 #include <fstream> 3 #include <string> 4 #include <sstream> 5 #include <set> 6 #include <map> 7 #include <algorithm> 8 #include <vector> 9 #include <algorithm> 10 #include <iterator> 11 #include <unordered_map> 12 #include <memory> 13 #include <functional> 14 15 using namespace std; 16 using namespace placeholders; 17 18 struct destination{}; 19 struct connection{}; 20 connection connect(destination *des); 21 void disconnect(connection c); 22 void f(destination &d); 23 void end_connection(connection *p) { disconnect(*p); } 24 25 int main() 26 { 27 destination d; 28 f(d); 29 system("pause"); 30 return 0; 31 } 32 33 connection connect(destination * des) 34 { 35 cout << "already connect" << endl; 36 return connection(); 37 } 38 39 void disconnect(connection c) 40 { 41 cout << "has been disconnect" << endl; 42 } 43 44 void f(destination &d) 45 { 46 connection c = connect(&d); 47 shared_ptr<connection> p(&c, bind(end_connection,_1)); 48 }