免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 6489 | 回复: 14
打印 上一主题 下一主题

c++11变化太大了,不知道该怎么去适应? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-10-12 10:53 |只看该作者 |倒序浏览
本帖最后由 wkx9dragon 于 2011-10-12 10:56 编辑

有时候真的觉得,编写一个函数对象去适应STL算法真的很麻烦,还不知道效率如何,最后用添加一个临时容器,一个交换解决swap。
听说当年的 unary_function,binary_function,bind1st,bind2nd,等等都不推荐了(Deprecated),啊!啊!啊!,我到现在都没学会呀,情何以堪。想用新的std::function,std::bind,发现还没完全会使。c++大牛说,尽量用函数对象取代函数,去适应STL算法。去死!去死!时髦的Lamda写法太丑了,还不如写一个函数对象呢,好看呢。我觉得C++让我编程时,花了太多的时间在选择上了,是用引用的,还是指针呢,还是干脆变量好了。是STL for_each算法呢,还是手写循环呢,还是for(auto x : V),还是BOOST_FOREACH,还是for( auto itr=v.begin();itr !=v.end();itr++) 等等,等等,每种方法都有优缺点,而且常常是不可替代的,因为选择任意一条,都会对数据定义,变量的使用带来变化。C就好像使用筷子,吃什么都用他,C++好像就是一堆餐具,(不是西餐具,因为筷子也在里面),你吃东西时,常常会为用哪个餐具而发呆。

//
比如:
typedef std::vector<std::string> Container;
Container fileList;
if (vm.count("filter") ){
string filter=vm["filter"].as< string > ();
regex re(filter);
Container v;
BOOST_FOREACH( string fname,fileList){
if( regex_search(fname,re) ) v.push_back(fname);
}
fileList.swap(v);//还是它简单。
//remove_if(fileList.begin(),fileList.end(),std::bind(std::regex_search,_1,re) );这个就不会编,编译器老提示出错。
}

论坛徽章:
0
2
发表于 2011-10-12 11:10
C++是一个很SB的语言,楼主不要太为其伤神

论坛徽章:
0
3 [报告]
发表于 2011-10-12 13:33 |只看该作者
同感,我一直没想通为什么有指针了还要有引用。

论坛徽章:
0
4 [报告]
发表于 2011-10-12 13:57 |只看该作者
http://en.wikipedia.org/wiki/C%2B%2B0x
http://www2.research.att.com/~bs/C++0xFAQ.html
http://gcc.gnu.org/projects/cxx0x.html
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/
http://stackoverflow.com/tags/c%2b%2b11/info

看看上面这些资料吧

目前c++11肯定是不会用在生产中的,所以我们大可等着瞧,等标准稳定了,编译器支持的普及又得两三年,众多c++常用库更新到c++11也得很长一段时间,大众接受更是需要更长时间,慢慢来

什么时候amazon上面卖的书都更新到c++11了,咱再把它当成一门新语言重新学一遍吧
据说BS正在写The C++ Programming Language的新版了,期待中...

论坛徽章:
0
5 [报告]
发表于 2011-10-12 14:00 |只看该作者
同感,我一直没想通为什么有指针了还要有引用。
wsw1wsw2 发表于 2011-10-12 13:33



    那你真的不要用c++了,慢慢领悟unix和c吧,后者确实是需要几辈子。。

论坛徽章:
0
6 [报告]
发表于 2011-10-12 14:53 |只看该作者
引用也就一unnullable pointer lvalue,除此以外就是语法糖了,方便运算符重载什么的。
(我倒是觉得有void*没void&很不爽。)
变化么,平心而论总体不算很大,要是本来就不怎么熟悉那就另当别论了。
本来就不是要全部学会才能用的顺的东西,何苦呢。

论坛徽章:
0
7 [报告]
发表于 2011-10-13 14:23 |只看该作者
同感,我一直没想通为什么有指针了还要有引用。

论坛徽章:
1
射手座
日期:2013-08-21 13:11:46
8 [报告]
发表于 2011-10-13 14:35 |只看该作者
还好,那个lambda我觉得不错啊,比手写函数对象方便多了

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
9 [报告]
发表于 2011-10-13 14:45 |只看该作者
还好,那个lambda我觉得不错啊,比手写函数对象方便多了
egmkang 发表于 2011-10-13 14:35


不是所有人都有鉴别事物好坏的能力。

论坛徽章:
1
射手座
日期:2013-08-21 13:11:46
10 [报告]
发表于 2011-10-13 15:29 |只看该作者
反倒是那个auto,我觉的不好,虽然想写起来方便,不用管右边什么类型,可是写多了,你到时候看代码就分不清了....
gdb么,还是分得清的,.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP