草庐IT

boost-container

全部标签

c++ - 两个日期之间的月数 - 使用 boost 的日期

我现在使用了一些boost::gregorian::date。我可以看到有相关的月、年和周持续时间类型。我可以看到如何使用已知的持续时间来提前给定的日期。曲:但是我怎样才能得到两个日期之间的月(或年或周)差异呢?我希望找到这样的函数:templateDURATIONdate_diff(constdate&d1,constdate&d2);还需要对舍入进行一些处理。此函数将返回d1和d2之间的(比如说)整月数。 最佳答案 您是指日期之间的差异(09/12-08/05=01/07=19个月)还是时间差异((date2_seconds-d

c++ - 如何使 boost unordered_map 支持 flyweight<string>

我正在尝试执行以下操作:boost::unordered_map,boost::flyweight>map;boost::flyweightfoo(name);map[foo]=foo;但是编译器提示:“错误C2665:‘boost::hash_value’:17个重载中没有一个可以转换所有参数类型”。但是我定义了如下函数:std::size_thash_value(constboost::flyweight&b){boost::hashhasher;conststd::string&str=b.get();returnhasher(str);}booloperator==(const

c++ - 在 boost::asio 中一起接受 IPv4 和 IPv6

简短而简单的问题:我是boost::asio的新手,我想知道是否可以创建一个tcp::acceptor监听两者,IPv4和IPv6连接在一起。boost主页上的教程是这样的:_acceptor=newtcp::acceptor(_ioService,tcp::endpoint(tcp::v4(),3456));端点总是用特定的协议(protocol)指定。难道不能在同一个端口上同时监听IPv4和IPv6吗? 最佳答案 如果你创建一个IPv6接受器,它会同时接受IPv4和IPv6连接如果IPV6_V6ONLY套接字选项被清除。IPv4

c++ - 为什么我应该使用 Apache C++ 标准库而不是任何其他 STL 实现以及 Boost?

我从ApacheC++standardlibrary中得到什么好处?我不是从编译器和Boost库附带的STL实现中得到的? 最佳答案 TheApacheC++StandardLibraryprojectisacompleteimplementationoftheISO/IEC14882C++StandardLibrary.ThemostdistinguishingcharacteristicofthisimplementationoftheC++StandardLibraryisitsportabilitytoalargenumbe

c++ - 限制 std::cout 中 boost::options_description 中默认值的精度

当我构建一个boost::options_description实例时options.add_options()("double_val",value(&config.my_double)->default_value(0.2),"it'sadouble");然后想自动输出可用于我的程序的选项,然后把std::cout默认值0.2显示的精度太高,当我有长变量名时,这会有效地扰乱我的输出:--double_val(=0.20000000000000001)it'sadouble不幸的是,之前对std::cout.precision的调用没有帮助:cout.precision(5);std

c++ - Boost.Asio 中的异常处理

Boost.Asio文档suggeststhefollowingexceptionhandlingpattern:boost::asio::io_serviceio_service;...for(;;){try{io_service.run();break;//run()exitednormally}catch(my_exception&e){//Dealwithexceptionasappropriate.}}它的问题是异常的上下文在处理时丢失了。例如,如果我在给定的io_service中有多个套接字session,我不知道是哪个导致了异常。如果不将异步处理程序的异常包装在try/c

c++ - 类构造函数上 boost::shared_ptr 的默认值

假设我有这样的类classA{public:A(inta,boost::shared_ptrptr){//whatever!}};我的问题是,该ptr的默认值是多少?我希望能够使用创建该类的实例AmyA(5);当然我知道我可以用一个参数创建另一个构造函数,但我正在寻找类似的东西A(inta,boost::shared_ptrptr=WAT?)这可能吗?目前我使用的是双构造函数方式,但这样做会很棒。 最佳答案 #includeA(inta,boost::shared_ptrptr=boost::make_shared())检查http

c++ - 如何使用 Boost 创建临界区?

对于我的跨平台应用程序,我已经开始使用Boost,但我无法理解如何实现代码来重现Win32的临界区或.Net的lock的行为。我想写一个方法Foo可以从不同的线程调用来控制对共享字段的写操作。应允许同一线程内的递归调用(Foo()->Foo())。在C#中这个实现非常简单:object_synch=newobject();voidFoo(){lock(_synch)//onethreadcan'tbelockbyhimself,butanotherthreadsmustwaituntill{//dosomeworksif(...){Foo();}}} 最佳答

c++ - 在 Windows 上将 Boost 库与 Boost_USE_STATIC_LIB OFF 链接

我的CMakeFiles.txt看起来像这样:cmake_minimum_required(VERSION2.6)#SetwarningsonandenabledebuggingSET(CMAKE_C_FLAGS"-Wall-q")include(FindBoost)set(Boost_USE_STATIC_LIBSON)set(Boost_USE_MULTITHREADEDON)set(Boost_USE_STATIC_RUNTIMEOFF)find_package(Boost1.57.0COMPONENTSsystemfilesystemREQUIRED)if(Boost_FOUN

c++ - 如何使用较旧的 C++ 标准编译 Boost? (特别是 C++03)

我在一个依赖于Boost(http://kratos-wiki.cimne.upc.edu/index.php/Main_Page)的项目中工作,这个项目目前只支持C++03。随着gcc++(v.5)的最新更新,C++11已成为默认标准,技术上我解决了修改CXX_FLAGS添加的问题:-std=c++03问题来自Boost库,我无法使用C++03std对其进行编译(我想,我不知道如何检查我编译的是哪个std)。我尝试使用以下命令来编译Boost:./b2installstage--with-python--with-serializationcxxflags="-std=c++03"我