草庐IT

c++ - 将 boost::bimap 转换为 std::map

将bimap转换为std::map的明显方法似乎不起作用。下面是正确/好的转换方法吗?有更好/更短的方法吗?typedefboost::bimapMapType;MapType_bimap;//Fill_bimapMapType::left_map&lmap=_bimap.left;//std::mapbmap(lmap.begin(),lmap.end());//THISDOESNTWORKstd::mapbmap;BOOST_FOREACH(MapType::left_const_referenceentry,lmap){bmap[entry.first]=entry.second

c++ - boost 灵气 : Omit element in Kleene Star parser

我想解析特殊的结构,把剩下的扔掉。但我不想使用skipper。我想获得这些构造的vector,所以我使用KleeneStar解析器作为主要规则。但是,每当有东西被丢弃时,一个默认构造的元素就会被插入到vector中。这是一个虚构的例子。它只查找字符串Test并丢弃其余部分,至少这是计划。但是每次规则garbage成功时,它都会将默认构造的项目添加到规则all中的vector,输出7insteat1。我如何告诉Spirit如果规则item成功,就添加到vector中?#defineBOOST_SPIRIT_USE_PHOENIX_V3#include#include#include#in

c++ - 快速多次替换成字符串

我有一个类似下面的字符串:{A}jahshs{b}jwuw{c}wuqjwhaha{d}{e}{f}jsj{g}我需要用不同的字符串替换每个{x}。问题来了,因为这个过程将重复大约1000次/秒,所以我需要一种优化/快速的方法来做到这一点。有什么想法吗?boost取代?boost格式?等等。 最佳答案 预分配所有缓冲区....利润哦,不要发送垃圾邮件。510分钟内的示例代码。好吧:还有LiveOnColiru#include#include#includetemplateintexpand(Rangeconst&/*key*/){r

c++ - 使用 boost::log API 时,有没有办法从发布二进制文件中删除文本文字?

boost1.55提供了一个使用C++流插入运算符(也称为左移运算符)的日志记录API。虽然语法很方便,但我想不出从可执行文件中丢弃调试文本文字的方法。例如,使用MFC,TRACE宏在发布配置中最终成为一个空行。使用TRACE(或任何此类宏函数):TRACE("Thistextliteralshallonlybefoundindebugconfiguration");使用boostAPI:LOG_DEBUG我测试了(使用VisualStudio2010,启用了编译器完全优化(/Ox))Howtoremovelogdebuggingstatementsfromaprogram线程建议,但

c++ - 是大括号可构造的类型特征

如何检查特定类型typenameT可以从参数构造typename...Args方式T{Args...}?我知道std::is_constructible来自的类型特征,但它适用于括号,而不适用于大括号。我在编写类型特征方面没有太多经验,因此无法提供初始示例。作为简化,我们可以接受任何合理的断言,即使这不会导致太大的普遍性损失。 最佳答案 templatedecltype(void(T{std::declval()...}),std::true_type())test(int);templatestd::false_typetest(

c++ - 剖析 C++ 代码编译速度

如果C++项目的物理结构有利于编译速度,您将如何获得某种客观的衡量标准?有些人说你应该避免使用模板以获得更好的编译速度,但是如果模板生成大量非冗余目标代码,即使行/秒编译速度不是很好,那也不是很糟糕。因此,您无法真正检查两个项目之间的线数/秒来了解结构是否良好,而且许多其他因素无论如何都可能扭曲结果。每秒生成的目标代码量是否是一个很好的衡量标准(显然是在同一平台和编译器上)?或者有一些代码分析工具吗?对物理结构进行某种客观测量以了解是否有改进空间会很有趣。例如。如果您应该尝试进一步优化头文件依赖性或将更多代码分组到cpp文件(alaunity构建),请将更多内容从头文件移动到cpp等。

c++ - boost::spirit:如何编写一个解析器来解析 2 个字符串并将它们 'combined' 变成一个?

我有一个qi::symbolescapedDoubleQuote可以将双""转换为\"。我尝试将其用于更复杂的解析器,并希望结果仍然是单个字符串。但是没有成功。我尝试使用和不使用qi::lexeme、qi::as_string和qi::as。#include#include#include#includenamespaceqi=boost::spirit::qi;namespaceascii=boost::spirit::ascii;structescapedDoubleQuote_:qi::symbols{escapedDoubleQuote_(){add("\"\"","\\\""

c++ - 安装摩西翻译软件。错误消息 : "ld: library not found for -lboost_thread"

我正在使用Xcode6.1的MacOSX10.9.5上安装Moses翻译软件。Theinstructionssay我需要安装g++和Boost。执行此操作后,我将gitclone,“cd”到目录中,然后键入./bjam-j8。首先,我确认我具备先决条件。首先,g++(我只是单击TAB以查看可用的内容):$g++g++g++-4.9然后boost:$brewinstallboostWarning:boost-1.56.0alreadyinstalled然后我尝试安装:$./bjam-j8Tip:installtcmallocforfasterthreading.SeeBUILD-INST

c++ - 从源代码编译后未安装 boost ptr_container 库

我已经将boost库从以前的1.54(svn源)更新到1.57(git源)。尽管我使用了相同的./b2参数,但目标目录不包含ptr_container库。具有克隆存储库的目录在此路径上正确包含ptr_container库:boost_git/libs/ptr_container我正在使用以下命令构建它:./b2--install--prefix=$SHL_PATH/boost-sNO_BZIP2=1-sNO_ZLIBruntime-link=sharedlink=shared-j2install但没有成功。编辑:似乎只有从git构建时才会出现问题。当我从boost站点下载zip包时,目

c++ - gcc5.2 abi 更改 -> 兼容性有保证吗?

我有以下情况(Ubuntu15.10和Debian测试)我有一个没有使用cxx11编译的库A和一个使用-std=c++11的库B。B包含并链接到A,A使用boost。如果我将B链接到A,A创建的应用程序会在动态加载期间崩溃。如果我编译不带cxx11的A或带cxx11的B,一切正常。我的问题:据我所知,ABI命名空间附加组件应该可以保证这类问题。我错了吗?我创建了一个示例项目来阐明问题:https://github.com/goldhoorn/sandbox/tree/gcc5.2-issue测试1失败,其他测试通过。GDB告诉我:ProgramreceivedsignalSIGSEGV