本文主要是介绍【程序语言】C++的扩充进化之路,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
编程语言之于程序员就如剑之于剑客,剑客不会因为剑而天下无敌,但每个剑客有应有自己心爱的剑……
而我所喜爱的剑就是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的非侵入性灵活方便。
这篇关于【程序语言】C++的扩充进化之路的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!