欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

Boost库学习(0)

发布时间:2025/7/14 编程问答 26 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Boost库学习(0) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

2019独角兽企业重金招聘Python工程师标准>>>

最近看了C++11标准,感觉C++的变得更强大了,连语法都有了点变化。(最后一次用C++可能还是在学校时,工作中一直用的是C,偶尔也用Perl/Python写点工具。)

实际试用了一下C++的新特性,有点失望。不是C++11的特性不好,而是编译器不完全支持。听说C++14的标准都要出来了,而C++11都没有完全支持。

例如:

  • 多线程,Linux下要在链接时手动加入pthread才行,不然运行出错;Windows下好像不用特别做什么。(也可能是IDE自己做了,我不知道而已。)

  • 正则表达式,Linux下GCC编译支持,运行不支持。(也可能是没有链接某个库)

我实在不喜欢这种明明是标准,却还要满世界找链接库的事情,所以决定用Boost库。(虽然也要链接Boost的库,但是却明明白白。)


在正式开始学习Boost库之前,先介绍几个要用到C++11新特性。

  • 匿名函数

       STL中有很多地方要用函数作为参数,为了传一个参数而在老远的地方定义一个函数实在有些不爽。

[capture-type](param-list) { function body }

      capture-type有3种,空白,=和&。空白的话,function body里只能使用传入的参数(可能也能用全局变量,这个没试过);=表示可以用外部的变量(值传递);&表示可以用外部的变量(引用传递)。

void funcX() {std::vector<int> vec;...int factor=3;/* 使用=,可以用外部的变量factor */int cnt=std::count_if(vec.cbegin(),vec.cend(),[=](int elem){ return elem%factor; }); }
  • for

       C++一直遭人诟病的没有foreach,现在终于弥补了这个遗憾。

void funcX() {std::vector<int> vec;...for(int elem:vec){...}/* 相当于下面的代码 *//* for(std::vector<int>::iterator it=vec.begin();it!=vec.end();++it)* {*     int elem=*it;*     ...* }*/ }
  • auto

      自动推测变量的类型,这是个好东西,又省心又省力。

 for(std::vector<int>::iterator it=vec.begin();it!=vec.end();++it)/* 相当于下面的代码 */for(auto it=vec.begin();it!=vec.end;++it)
  • shared_ptr

      用于自动delete内存空间。内部自动计算引用次数(即有几个指针指向这块空间),当引用次数变成0时,自动调用delete处理。

转载于:https://my.oschina.net/u/2002913/blog/306507

总结

以上是生活随笔为你收集整理的Boost库学习(0)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。