work_6
这次的作业是阅读C++11的新特性并提出问题,作为一个大部分代码都是用C++的基本语法并没有特别关注C++一代又一代新特性的学生来说,首先我阅读了一些关于新特性的文章。为了更快的理解,我首先选择了阅读中文的博客,首先看到了http://blog.csdn.net/hzyong_c/article/details/8273884#t8这篇C++新特性学习笔记,看完关于引入右值引用的概念后,我又查阅了一些关于左值和右值的内容,看到了一些例子,一些基本的区别和用法还是比较理解的,但是对于C++11这次加入的右值引用还是不太理解,所以提出第一个问题:右值引用将会在什么情况下被使用,且如何更好的实现程序?
然后我看到了关于for循环的修改,for语句将允许简单的范围迭代,即
int my_array[]={,,,,};
for(int &x : my_array)
{
x*=;
}
for
因为for语句是非常常见的,如此修改也肯定会简化我们的代码。接下来我看到了另一个亮点即引入了Lambda表达式,语法为:[](形参列表)->返回值类型{函数体},例如想要调用sort函数,原来的代码为
bool compare(int &a,int &b)
{
return a>b; //降序排序
}
sort(a,a+n,compare);
sort
而利用Lambda表达式后代码可以为
sort(a,a+n,[](int &a,int &b)->bool{return a>b;});
new_sort
这样代码只需要一行即可完成,大大简化了代码。为了更加清楚Lambda表达式的运用,我又阅读了http://www.cnblogs.com/L-hq815/archive/2012/08/23/2653002.html这篇专门讲述C++Lambda表达式的文章,看到并运行了一些例子,有了一定的了解。因为bind()和lambda表达式可以实现类似的功能,所以第二个问题为:关于bind()和lambda表达式使用时应该选哪一个,不同情况下哪个更有优势?
接着我又了解了auto关键字的更改,即有被明确初始化的变量可以使用auto关键字,使用auto会避免重复声明编译器已经知道的类型,并且使用位置类型或者类型名称不易李姐时使用auto会更加便利。关于auto关键字我有一个小问题,即:利用auto关键字定义的变量的类型是可变的还是由初始化的变量类型所确定?
接下来我又读了http://blog.sina.com.cn/s/blog_6a1ce1fb01013pca.html,这是对于Welcome Back to C++ (Mordern C++)的翻译,从中我看到了利用智能指针代替裸指针的新特性,有效的解决了因为忘记delete导致程序过早退出的问题,但是从人为delete到指针自动销毁的过程中,我产生了第四个问题,即:在指针被自动销毁时,是否会导致其他指针指向无效内存区,在使用时需要注意哪些问题?
最后令我感兴趣的是http://www.cnblogs.com/zhuyp1015/archive/2012/04/08/2438288.html中提到的多线程编程,以前进行多线程编程都是需要系统支持的,C++11开始支持多线程编程,且开始一个线程是比较简单的,例如下列代码
#include<thread>
#include<iostream>
void hello()
{
std::cout<<"Hello from thread"<<std::endl;
}
int main()
{
std::thread t1(hello);
t1.join();
std::cout<<"Main Thread"<<std::endl;
return ;
}
thread
由于没有过多的编程经验,所以我对C++的多线程编程还不是很熟悉,第五个问题为:在使用C++进行多线程编程的过程中如何有效避免数据竞争的问题,有没有什么通用的方法?
work_6的更多相关文章
随机推荐
- jpa懒加载异常
1.项目背景概述 事情是这样子的,使用了spring data jpa的项目jeesite jeesite的实体中使用了懒加载模式. 并且一个实体类中还不止一个属性设置了懒加载模式. 项目本身已经存在 ...
- dex
数字交叉连接设备(Dendenkosha Electronic Exchange),就是常说的电子交换器. 数字交叉连接设备完成的主要是STM-N信号的交叉连接功能,它是一个多端口器件,它实际上相 ...
- struts1,struts2,springMVC终极对比
最近做项目用到了struts2,之前一直是用struts1和springMVC.感觉到了struts2从很大程度上和这两个还是有很大区别的,所以今天搜集了些资料,给他们做一下对比. Struts1官方 ...
- [POJ1753]Flip Game(开关问题,枚举)
题目链接:http://poj.org/problem?id=1753 和上一个题一样,将初始状态存成01矩阵,就可以用位运算优化了.黑色白色各来一遍 /* ━━━━━┒ギリギリ♂ eye! ┓┏┓┏ ...
- 【转载】React初学者入门须知
http://www.oschina.net/news/75530/9-things-every-reactjs-beginner-should-know react.js入门学习 看了一遍,没什么特 ...
- socket编程---一个简单例子
服务器端代码(单线程): import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamRe ...
- UVA 10765 Doves and bombs(双连通分量)
题意:在一个无向连通图上,求任意删除一个点,余下连通块的个数. 对于一个非割顶的点,删除之后,原图仍连通,即余下连通块个数为1:对于割顶,余下连通块个数>=2. 由于是用dfs查找双连通分量,树 ...
- Android 如何直播RTMP流
在android上,视频/音频流直播是极少有人关注的一部分.每当我们讨论流媒体,RTMP(Real Time Messaging Protocol)是不可或缺的.RTMP是一个基本的视频/音频直播流协 ...
- jquery加入购物车飞入的效果
主要原理是:点击当前图片的时候,复制(克隆)当前图片在当前位置,然后利用jQuery的animate()方法实现图像的飞入效果 效果预览:http://runjs.cn/detail/qmf0mtm1 ...
- 如何打开和关闭Oracle Flashback
1.打开flashback: 关闭数据库 SQL>shutdown immediate; 启动到mount方式 SQL>startup mount; 如果归档没有打开,打开归档[因为fla ...