草庐IT

boost-iterators

全部标签

c++ - Boost.Hana 中是否有与 Boost.Fusion 中的 View 概念等效的概念?

我尝试使用hana::for_each迭代用户定义的结构,并注意到它被复制/移动,而Boost.Fusion允许您迭代在原始结构上。我没有在Boost.Hana中找到任何类似于Boost.Fusion的View概念。如何将转换应用于序列而不每次都复制/移动它们?#include#includestructFoo{Foo()=default;Foo(constFoo&){std::cout更新:我尝试使用hana::transform将std::ref应用于成员,但是Struct不是Functior,所以transform不适用于这种情况。我能够使用hana::accessors实现所需

c++ - 将 boost ptime 从本地时间转换为 UTC

我有一个boost::posix_time::ptime对象(Boostv1.60),它包含系统时区中的日期和时间信息。我需要将其转换为UTC格式的unix时间戳。time_tconvertLocalPtimeToTimestamp(constboost::posix_time::ptime&pt){usingnamespaceboost::local_time;staticconsttime_tt_null=0;staticstructtm*tm_local=localtime(&t_null);statictime_zone_ptrzone(newposix_time_zone(t

c++ - 使用 boost asio 捕捉 Ctrl-C

我正在尝试在应用程序中捕获Ctrl-C,如下面的MWE所示#include#includevoidhandler(constboost::system::error_code&error,intsignal_number){std::cout>choice;}}不幸的是,当我按下Ctrl+C时,handler()没有被调用。相反,循环不再等待用户输入,如下所示:c:\tmp>CtrlC.exePressakey:dPressakey:ePressakey:Pressakey:Pressakey:Pressakey:Pressakey:Pressakey:Pressakey:Pressa

c++ - 当没有任何意义时, `Iterator::pointer` 使用什么?

例如,考虑一些假设的to_upper_iterator遍历一系列字符,返回std::toupper对于operator*.这些迭代器别名对我来说很有意义:templatestructto_upper_iterator{usingvalue_type=CharT;usingreference=CharT;usingdifference_type=std::ptrdiff_t;usingiterator_category=std::random_access_iterator_tag;};没有意义的是什么应该/可以用于pointer别名。我试着把它关掉,但果然我遇到了编译错误。似乎这是由于

c++ - std::map::const_iterator 泄露了对值的非常量引用?

我观察到std::map::const_iterator泄漏了对value_type的非常量引用:#include#includeintmain(intargc,char*argv[]){std::mapfoo={{1,1},{4,2}};constauto&m=foo;constauto&it=foo.find(1);printf("%d%d\n",it->first,it->second);int&i=it->second;i=3;auto&one=foo.at(1);printf("%d%d\n",1,one);return0;}输出$g++test.cc&&./a.out111

c++ - 在 MS Visual Studio 2017 中将 boost::thread 与 CMake 一起使用会导致两个编译器错误

我想在我的项目中使用boost::thread并且我使用CMake作为构建工具。然而,即使是非常简单的设置也会导致两个编译器错误:main.cpp#includeintmain(){boost::threadt;return0;}CMakeLists.txtcmake_minimum_required(VERSION2.6)project(ThreadTest)set(Boost_USE_STATIC_LIBSOFF)set(Boost_USE_MULTITHREADEDON)set(Boost_USE_STATIC_RUNTIMEOFF)find_package(Boost1.58.

c++ - 将 escaped_list_separator 与 boost split 结合使用

我正在使用boost字符串库,并且刚刚发现split方法非常简单。stringdelimiters=",";stringstr="string,with,comma,delimited,tokens,\"anddelimiters,insideaquote\"";//Ifwedidn'tcareaboutdelimitercharacterswithinaquotedsectionwecouldusvectortokens;boost::split(tokens,str,boost::is_any_of(delimiters));//givesthewrongresult:tokens

c++ - Boost 的带有类成员函数的 Interpreter.hpp 示例

Boost在中带有示例文件boost_1_41_0\libs\function_types\example称为interpreter.hpp和interpreter_example.hpp我试图创造一种情况,在这种情况下,我有一堆不同参数、返回类型等的函数,所有这些都注册并记录到一个位置。然后能够提取一个函数并使用一些参数执行它。在阅读了这里的几个问题和其他一些来源后,我认为这个示例文件中实现的设计是我所能得到的最好的。它接受任何类型的函数,并允许您使用字符串参数列表调用它,该列表被解析为正确的数据类型。它基本上是一个控制台命令解释器,这可能就是它要说明的意思。我一直在研究代码并四处寻

c++ - 如何创建一个常量 boost 矩阵?

如何创建常量boost矩阵?以下无效:constboost::numeric::ublas::matrixarrayM(1,3)={{1.0,2.0,3.0}}; 最佳答案 通常类似于:typedefboost::numeric::ublas::matrixmatrix_type;constmatrix_typeget_matrix(void){matrix_typeresult(1,3);result(0,0)=1;result(0,1)=2;result(0,2)=3;returnresult;}constmatrix_type

c++ - boost库应该依赖于结构成员对齐吗?

我发现,hardway,至少boost::program_options依赖于编译器配置的结构成员对齐。如果您使用默认设置构建boost并将其与使用4字节对齐(/Zp4)的项目链接,它将在运行时失败(使用program_options进行了最小测试)。Boost将生成一个断言,指示可能存在错误的调用约定,但真正的原因是结构成员对齐。有什么办法可以避免这种情况吗?如果对齐导致代码不兼容,难道不应该将其包含在库命名中吗? 最佳答案 您需要确保您的程序和链接的库具有相同的ABI。可以改变C++类和函数的ABI的编译器开关的数量可能太大,因