homework-09

1. 用Lambda计算"Hello World!"中字母e和l的个数:

 1 #include <iostream>
 2 using namespace std;
 3 char str[110];
 4 auto func = [] (char ch)
 5 {
 6     int num = 0;
 7     int len = strlen(str);
 8     for (int i = 0;i < len;i++) if (str[i] == ch) num++;
 9     cout<<num<<endl;
10 };
11 int main(int argc, const char * argv[])
12 {
13     strcpy(str,"Hello World!");
14     func('e');
15     func('l');
16     return 0;
17 }
View Code

无论如何还是成功了...

也不知道Lambda是不是这么用...感觉参数部分应该加点东西吧...

不过还是编译成功了...也试用了一下新的auto特性...

总的来说和最初用的函数基本上没神马区别...

2. 练习使用智能指针打印"Hello World!"循环右移n位的结果:

 1 #include <iostream>
 2 #include <memory>
 3 using namespace std;
 4 char str[20];
 5 void deviate(int k)
 6 {
 7     shared_ptr<char>p(new char[20]);
 8     strcpy(p.get(),"Hello World!");
 9     string str1 = p.get() + strlen("Hello World!") - k;
10     cout<<str1;
11     *(p.get() + strlen("Hello World!") - k) = '\0';
12     str1 = p.get();
13     cout<<str1<<endl;
14 }
15 int main(int argc, const char * argv[])
16 {
17     deviate(1);
18     deviate(3);
19     return 0;
20 }
View Code

指针依旧是我的弱项...

不过随着本学期高级程序设计语言2的学习...指针有望能够真正理解...

同样...智能指针感觉还是不太会用...用的和一般指针也差不了多少...

这次就这样吧...还得写围棋呢...

posted @ 2013-11-24 23:55  yiming.zou  阅读(150)  评论(2编辑  收藏  举报