现在的位置: 首页 > 综合 > 正文

【程序语言】C++的扩充进化之路

2018年04月29日 ⁄ 综合 ⁄ 共 1175字 ⁄ 字号 评论关闭

 编程语言之于程序员就如剑之于剑客,剑客不会因为剑而天下无敌,但每个剑客有应有自己心爱的剑……

而我所喜爱的剑就是C++,也许每个江湖中的剑客都会对剑有爱有恨,我对C++的感觉也是“爱之深,责之切”

不说那些讨厌C++或者喜爱C++的原因,抑或简单蛮横的抱怨了,开始我们的C++扩充之旅吧!

 

1.使用C++也有些时间了,感觉C++最应该被诟病的地方是——“库支持太弱”。或许这句话有点儿不负责任,但不可否认的是——“俺想用C++做点儿事,总找不到合适的库,东西还得自己写!”这样的抱怨并不少见。C++的include确实不如java的import,C#的using,有那么多好用的标准的东西。但没标准的,但有许多的优秀的非标准库。

 

   
多线程   boost::thread
网络   boost::asio
数据库   ——
图形   众多

2.核心语义已经略显落后,虽然谨慎的设计是好的,但一些优秀的东西在其他语言成熟使用后,还是应该迅速采纳或者拿出自己的方案的。下面的是一些其他语言中已经作为基本支持的部分,C++中暂时还没有予以支持,我们现在通过一些库来做间接补充。

     
类型转换 boost::lexical cast

1.所有基本类型转换到string

2.string转换到所有基本类型

代表所有的Object boost::any 所有东西都可以是any类型,所以你可以建立一个容纳任何东西的容器了
支持Unicode —— 现在先用wchat_t和wstring吧
支持任意精度的big decimal —— 我正在在写,目前完成了加法
对不允许复制对象获得其引用 boost::ref 在某些情况下是十分有用的,尤其是和boost::bind联合使用的时候
参数动态绑定,类动态赋值 boost::bind 比标准库方便
更简洁的循环遍历方式 boost::Foreach

你可以这样遍历了BOOST_FOREACH(int x,arr)

{   }

遍历操作一个数组或者容器了

     
     

 

 3.其他语言中作为标准支持,其实作为库更合适的部分。

 

 

 
xml处理 tinyXML
正则表达式 boost::Regex,boost::Xpressvie
日期时间处理 boost::Date
Json数据处理 Jsoncpp
   

4.指针带来的负担和没有内存管理机制带来的手工工作

更好的指针 shared_ptr
内存管理池 boost::pool

5.其他一些比较好的东西

元编程扩展 boost::MPL
线程池 threadpool(在sourceforge上下载)
   

6.脚本能力扩充,C++调用脚本的能力

 

   
Lua 通过堆栈方式和C++无缝连接
python python的库十分丰富

7.其他语言调用C++的能力,推荐使用swig,虽然例如java也可以通过JNI调用C++,但强制C++按照一定的规范写,不如swig的非侵入性灵活方便。

抱歉!评论已关闭.