草庐IT

boost-program-options

全部标签

c++ - 为什么 map 上的 BOOST_FOREACH 仅适用于 typedef

我试图通过map编写一个简单的循环元素,我想知道为什么我使用的第一种语法不起作用/无法编译?我写的第一个版本如下,它不能用VS'2008/boost版本1.44编译:std::mapmyMap;...BOOST_FOREACH(map::value_type&p,myMap){}现在,如果我像下面这样重写代码,编译就可以了,但为什么呢?typedefstd::mapmyMap_t;myMap_tmyMap;...BOOST_FOREACH(myMap_t::value_type&p,myMap){} 最佳答案 它是一个预处理器宏,它

c++ - boost 日志记录类属性

我正在尝试为我的应用程序做一个日志。我想添加一个属性,这样我就可以知道日志属于哪个类。我已经开始测试它是否有效:#include#include#include#include#include#include#includeenumseverity_levels{debug,info,warning,error};typedefboost::log::sinks::synchronous_sinkSinkSysLogBackEnd;typedefboost::log::sources::severity_loggerBoostLogger;std::ostream&operator(l

c++ - 用 boost::shared_ptr<std::list<T>> 初始化 boost::shared_ptr<std::vector<T>>

我想初始化一个boost::shared_ptr>vec在构造函数中使用boost::shared_ptr>list初始化列表?这可能吗?我试过这个:测试.hppclassTest{public:Test(boost::shared_ptr>list);private:boost::shared_ptr>vec;};测试.cppTest::Test(boost::shared_ptr>list):vec(list->begin(),list->end()){}部分错误信息:Test.cpp:Inconstructor‘Test::Test(boost::shared_ptr>>)’:T

c++ - std::string& 与 boost::string_ref

如果我在std::string&上使用boost::string_ref还重要吗?我的意思是,在处理字符串时,使用boost::string_ref真的比std版本更有效吗?我真的不明白这里提供的解释:http://www.boost.org/doc/libs/1_61_0/libs/utility/doc/html/string_ref.html.真正让我感到困惑的是std::string也是一个仅指向分配内存的句柄类,并且自c++11以来,具有移动语义的复制操作在上面的文章中提到不会发生。那么,哪个更有效? 最佳答案 strin

c++ - 如何在 Travis CI 中使用最新的 boost 版本?

我尝试通过多种方式在TravisCI环境中安装boost1.64。但他们都没有成功。在我第一次天真的尝试中,我只是在travis脚本中添加了以下行:install:-sudoapt-getinstalllibboost1.64-all-dev结果是错误信息:找不到包libboost1.64-all-dev在第二次尝试中,我指定了具有必要的boost版本的存储库。before_install:-sudoadd-apt-repository-yppa:nschloe/boost-nightly-sudoapt-getupdate-qqinstall:-sudoapt-getinstalll

c++ - boost.asio 如何发现我的服务器应用程序正在监听哪个端口?

我有点奇怪,当客户端应用程序连接到服务器时,boost.asio不使用基本概念——使用IP地址和端口。可能是我对Boost有点菜鸟-我接受-但无论如何我不明白。所以,我有这样的代码让客户端连接到本地主机上的服务器:boost::asio::io_serviceio_service;tcp::resolverresolver(io_service);tcp::resolver::queryquery("localhost","daytime");tcp::resolver::iteratorendpoint_iterator=resolver.resolve(query);tcp::re

c++ - 如何使用 boost lambda 用新对象填充指针 vector

我最近开始使用boostlambda,我想我会尝试在它会/应该使事情更容易阅读的地方使用它。我有一些类似下面的代码std::vectorv;for(inti=0;i稍后,删除它...std::for_each(v.begin(),v.end(),boost::lamda::delete_ptr());整齐地整理。但是,我想我应该尝试使用lambda来“lambda化”vector的总体......然后烟火开始了......我试过了..std::generate_n(v.begin(),20,_1=newX());但这引发了各种编译器错误。实现此目标的最佳“lambda”方式的任何想法。

c++ - C++ 中的 boost::bind 和 << 运算符

我想绑定(bind)for_each(begin,end,boost::bind(&operator不幸的是它不起作用:Error1errorC2780:'boost::_bi::bind_t::type,boost::_mfi::dm,_bi::list_av_1::type>boost::bind(MT::*,A1)':expects2arguments-3providedc:\source\repository\repository\positions.cpp90我做错了什么? 最佳答案 相反,您可以尝试boost.lambd

c++ - 使用 boost 创建一个始终返回 true 的 lambda 函数

假设我有一个采用某种形式的谓词的函数:voidFoo(boost::functionpredicate);如果我想用一个始终返回true的谓词来调用它,我可以定义一个辅助函数:boolAlwaysTrue(int,int,int){returntrue;}...Foo(boost::bind(AlwaysTrue));但是有没有办法调用这个函数(可能使用boost::lambda)而不必定义一个单独的函数?[编辑:忘了说:我不能使用C++0x] 最佳答案 UncleBens在Scharron的回答中对此发表了评论,但我认为这实际上是

c++ - boost::bind 会导致开销吗?

我目前从事网络软件方面的工作。它有一个主类,server这显然代表一个服务器实例。Aserver实例可以发送请求,并通过回调通知用户响应。代码如下:classserver{public:typedefboost::functioncallback_func;voidsend_request(endpoint&ep,callback_funccb);};现在让我们说,作为一个用户,我想通过回调了解调用它的实例,我可以做以下事情:voidmycallback(constserver&sv,intduration){...}serversv;sv.send_request("localhos