std/boost
sukhoi27smk
学习是为了探索这个世界的本质
展开
-
MinGW编译boost库
介绍在windows下编译boost可以选择msvc和mingw两种方式,这里介绍使用mingw方式编译,msvc也是类似的操作源码下载例如1.48.0http://www.boost.org/users/history/version_1_48_0.html使用不同的版本时将version_1_48_0替换即可编译编译 b2.exe进入boost的目录,运行bootstrap.bat,成功后会生成b2.exe编译Boost进入boost的目录.\b2.exe insta转载 2022-02-14 20:26:23 · 1131 阅读 · 0 评论 -
boost::asio udp异步收发数据
#ifdef _MSC_VER#define _WIN32_WINNT 0x0A00#endif#include <iostream>#include <boost/shared_ptr.hpp>#include <boost/asio.hpp>#include <boost/lexical_cast.hpp>#include <boost/bind.hpp>#include <boost/function.hpp>.原创 2021-06-08 12:52:50 · 3280 阅读 · 0 评论 -
Target “xxx” links to target “Boost::filesystem“ but the target was not found
Boost::system Boost::thread Boost::timer等等替换为${Boost_LIBRARIES}即可原创 2021-01-21 16:00:04 · 2023 阅读 · 0 评论 -
unique_ptr使用简介
我们知道auto_ptr通过复制构造或者通过=赋值后,原来的auto_ptr对象就报废了.所有权转移到新的对象中去了.而通过shared_ptr可以让多个智能指针对象同时拥有某一块内存的访问权.但假如我们不希望多个内存块被多个智能指针对象共享,同时又不会像auto_ptr那样不知不觉的就让原来的auto_ptr对象失效,可咋整呢?这个时候就要使用unique_ptr了,顾名思义嘛,unique转载 2014-07-14 10:34:54 · 767 阅读 · 0 评论 -
Linux下boost库的安装
最近由于编译一个程序用到了C++的boost库,所以便安装了这个库。但是,其中遇到了一些小问题。所以记录下来,以供别人参考。 首先说一下我的环境:Ubuntu 12.04 32bit, gcc 4.6.3 其实在ubuntu下,可以用一下命令直接安装sudo apt-get install libboost-dev转载 2015-05-27 22:05:41 · 1087 阅读 · 0 评论 -
C++11 标准新特性: 右值引用与转移语义
原文地址http://www.ibm.com/developerworks/cn/aix/library/1307_lisl_c11/C++ 的新标准 C++11 已经发布一段时间了。本文介绍了新标准中的一个特性,右值引用和转移语义。这个特性能够使代码更加简洁高效。新特性的目的右值引用 (Rvalue Referene) 是 C++ 新标准 (C转载 2015-06-17 14:11:16 · 523 阅读 · 0 评论 -
C++11 标准新特性: 右值引用与转移语义(点评)
对MyString那个例子来说。我写了三个测试用例。1. MyString a;a = MyString("Hello"); //调用转移构造函数std::vector vec; vec.push_back(MyString("World")); //调用转移赋值函数原创 2015-06-17 15:30:22 · 902 阅读 · 0 评论 -
容器set和multiset
一、set和multiset基础set和multiset会根据特定的排序准则,自动将元素进行排序。不同的是后者允许元素重复而前者不允许。需要包含头文件:#include set和multiset都是定义在std空间里的类模板:[cpp] view plaincopyprint?templatecla转载 2015-06-18 17:34:14 · 552 阅读 · 0 评论 -
std::set作为一个有序集合
摘要:std::set作为标准库的一个关联容器,实现内部元素进行了排序,使用这特性可以对一组元素进行插入排序。std::set最初的设计是完成数学中“集合”的概念,它提供的接口也是如此。本文简单地介绍一下这一个标准库容器。为了使用std::set,我只需要如下:#include//定义一个整型数据的集合std::setint> set;如同所有的STL容转载 2015-06-19 10:39:34 · 850 阅读 · 0 评论 -
详细解说 STL 排序(Sort)
0 前言: STL,为什么你必须掌握对于程序员来说,数据结构是必修的一门课。从查找到排序,从链表到二叉树,几乎所有的算法和原理都需要理解,理解不了也要死记硬背下来。幸运的是这些理论都已经比较成熟,算法也基本固定下来,不需要你再去花费心思去考虑其算法原理,也不用再去验证其准确性。不过,等你开始应用计算机语言来工作的时候,你会发现,面对不同的需求你需要一次又一次去用代码重复实现这些已经成熟的算转载 2016-02-16 10:39:32 · 2179 阅读 · 0 评论 -
getline()函数详解
学习C++的同学可能都会遇到一个getline()函数,譬如在C++premer中,标准string类型第二小节就是“用getline读取整行文本”。书上给的程序如下:int main(){ string line: while(getline(cin,line)) cout return 0;}大家会发现运行转载 2016-02-16 10:41:53 · 652 阅读 · 0 评论 -
关于std:auto_ptr
很多人听说过标准auto_ptr智能指针机制,但并不是每个人都天天使用它。这真是个遗憾,因为auto_ptr优雅地解决了C++设计和编码中常见的问题,正确地使用它可以生成健壮的代码。本文阐述了如何正确运用auto_ptr来让你的代码更加安全——以及如何避免对auto_ptr危险但常见的误用,这些误用会引发间断性发作、难以诊断的bug。1.为什么称它为“自动”指针?auto_ptr只是众多可转载 2014-07-10 16:48:12 · 640 阅读 · 0 评论 -
[C/C++]关于C++11中的std::move和std::forward
std::move是一个用于提示优化的函数,过去的c++98中,由于无法将作为右值的临时变量从左值当中区别出来,所以程序运行时有大量临时变量白白的创建后又立刻销毁,其中又尤其是返回字符串std::string的函数存在最大的浪费。比如:1 std::string fileContent = “oldContent”;2 s = readFileContent(fileName);转载 2014-07-09 14:38:12 · 882 阅读 · 0 评论 -
C++11中的右值引用及move语义编程
C++0x中加入了右值引用,和move函数。右值引用出现之前我们只能用const引用来关联临时对象(右值)(造孽的VS可以用非const引用关联临时对象,请忽略VS),所以我们不能修临时对象的内容,右值引用的出现就让我们可以取得临时对象的控制权,终于可以修改临时对象了!而且书上说配合move函数,可以大大提高现有C++的效率。那么是怎样提高它的效率的呢?看段代码先!#include转载 2014-07-09 11:29:11 · 707 阅读 · 0 评论 -
Boost库之function的使用
Boost库的function是一组函数对象包装类的模板,实现了一个泛型的回调机制。Boost库的function与函数指针相比,优点在于它允许用户在目标的实现上拥有更大的弹性,即目标既可以是普通函数(自由函数),也可以是函数对象和类成员函数,而且可以给函数添加状态。使用Boost库的function,可以很好地与现有的代码融合在一起。另外,function还可以与Boost库的bind和la转载 2014-05-08 14:50:28 · 634 阅读 · 0 评论 -
Boost智能指针——weak_ptr
循环引用:引用计数是一种便利的内存管理机制,但它有一个很大的缺点,那就是不能管理循环引用的对象。一个简单的例子如下:#include#include#include#includeclass parent;class children;typedef boost::shared_ptr parent_ptr;typedef boost::shared_p转载 2014-05-13 10:49:46 · 631 阅读 · 0 评论 -
Boost智能指针——scoped_ptr
boost::scoped_ptr和std::auto_ptr非常类似,是一个简单的智能指针,它能够保证在离开作用域后对象被自动释放。下列代码演示了该指针的基本应用:#include#include#includeclass implementation{public: ~implementation() { std::cout "de转载 2014-05-13 10:36:18 · 612 阅读 · 0 评论 -
boost::weak_ptr和enable_shared_from_this
boost::weak_ptr和enable_shared_from_this shared_ptr在我的实践中使用很广,在接口层面上,我基本都会默认的使用shared_ptr.而weak_ptr则很少使用;即便使用,也是间接的使用,例如使得class A继承自boost::enable_shared_from_this,这样A便具有了一个weak_ptr的成员对象,我便可以通过接口sha转载 2014-05-13 14:01:18 · 754 阅读 · 0 评论 -
Boost智能指针——shared_ptr
boost::scoped_ptr虽然简单易用,但它不能共享所有权的特性却大大限制了其使用范围,而boost::shared_ptr可以解决这一局限。顾名思义,boost::shared_ptr是可以共享所有权的智能指针,首先让我们通过一个例子看看它的基本用法:#include#include#includeclass implementation{public:转载 2014-05-13 10:23:50 · 776 阅读 · 0 评论 -
C++中std::tr1::function和bind 组件的使用
在C++的TR1中(Technology Report)中包含一个function模板类和bind模板函数,使用它们可以实现类似函数指针的功能,但却却比函数指针更加灵活,特别是函数指向类的非静态成员函数时。可以参考Scott Meyers. >. Item 35.下面具体说明其使用方法。一、指向全局函数或静态成员函数时因为在本质上讲全局函数和静态成员函数没有区别,使用方法上除了静态成员函数转载 2014-05-13 16:37:06 · 747 阅读 · 0 评论 -
vector的reserve和resize
vector 的reserve增加了vector的capacity,但是它的size没有改变!而resize改变了vector的capacity同时也增加了它的size!原因如下: reserve是容器预留空间,但在空间内不真正创建元素对象,所以在没有添加新的对象之前,不能引用容器内的元素。加入新的元素时,要调用push_back()/insert()函数。 r转载 2014-05-26 15:26:11 · 666 阅读 · 0 评论 -
std::copy
如果要把一个序列(sequence)拷贝到一个容器(container)中去,通常用std::copy算法,代码如下:std::copy(start, end,std::back_inserter(container)); 这里,start和end是输入序列(假设有N各元素)的迭代器(iterator),container是一个容器,该容器的接口包含函数push_back。假设contai转载 2014-07-22 11:02:32 · 1031 阅读 · 0 评论 -
C++ 11右值引用
C++ 11中引入的一个非常重要的概念就是右值引用。理解右值引用是学习“移动语义”(move semantics)的基础。而要理解右值引用,就必须先区分左值与右值。 对左值和右值的一个最常见的误解是:等号左边的就是左值,等号右边的就是右值。左值和右值都是针对表达式而言的,左值是指表达式结束后依然存在的持久对象,右值是指表达式结束时就不再存在的临时对象。一个区分左值与右值的便捷方法是转载 2014-07-09 11:28:43 · 601 阅读 · 0 评论 -
Boost学习之指针容器--pointer_container
有时,我们可能需要一个包含指针的容器.比如存放一些不可拷贝的对象或者想在容器里存放基类以实现多态.尽管我们可以直接定义存放指针的STL容器,不过这样并不方便,我们得处处小心,在清空或删除容器里的元素时我们要保证异常安全地回收指针所指向的对象,以防内存泄漏.一个好的办法是使用共享智能指针的容器,如std::vector >,不过这样做的话智能指针所带来的开销显然太大了.Boost.point转载 2014-07-09 11:08:37 · 3254 阅读 · 0 评论 -
std::map用法
std::map用法 STL是标准C++系统的一组模板类,使用STL模板类最大的好处就是在各种C++编译器上都通用。 在STL模板类中,用于线性数据存储管理的类主要有vector, list, map 等等。本文主要针对map对象,结合自己学习该对象的过程,讲解一下具体用法。本人初学,水平有限,讲解差错之处,请大家多多批评指正。 map对象所实现的功能跟MFC得CMap相转载 2014-05-05 15:13:47 · 660 阅读 · 0 评论