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 }

 

posted @ 2017-08-28 22:11  五月份小姐  阅读(226)  评论(0编辑  收藏  举报