草庐IT

sort_options

全部标签

c++ - 使用 std::optional 参数调用函数

我有一个函数,其签名是:voidfunc(std::optionalos=std::nullopt);(我使用别名std::experimental::optional直到std::optional正式可用。)但是,我很难清楚地调用它。编译器将拒绝执行两个隐式转换(constchar*➝std::string➝std::optional)以使用原始C字符串文字调用它。我可以这样做:func(std::string("Hello"));编译器会计算出一个std::optional是需要的,并进行转换。但是,这太冗长了。感谢C++11,我也可以这样做:func({"Hello"});虽然这

c++ - 如何使用 boost::optional<T> 在 C++ 中返回 NULL?

我有一个函数在某些情况下需要返回NULL,还有另一个函数需要测试这个函数的返回值。我知道boost::optional但不确定如何使用语法。下面是上述用法的一个简单示例:intfunct1(conststring&key){//useiteratortolookforkeyinamapif(iterator==map.end()){returnNULL//needhelphere!elsereturnit->second;}voidfunct2(stringkey){if(funct1(key)==NULL){//有人可以帮忙语法吗?谢谢。 最佳答案

kotlin - 为什么使用 Arrow 的 Options 而不是 Kotlin 可为空的

我正在查看找到的箭头库here.为什么要使用Option类型而不是Kotlin的内置nullables? 最佳答案 我已经使用Arrow提供的Option数据类型一年多了,一开始,我们对自己做了完全相同的问题。答案如下。OptionvsNullable如果您仅将option数据类型与Kotlin中的nullables进行比较,它们几乎是偶数。相同的语义(有或没有一些值),几乎相同的语法(选项使用map,可空值​​使用safecalloperator)。但是当使用Options时,您可以从箭头生态系统中获益!箭头生态系统(功能生态系统

kotlin - 为什么使用 Arrow 的 Options 而不是 Kotlin 可为空的

我正在查看找到的箭头库here.为什么要使用Option类型而不是Kotlin的内置nullables? 最佳答案 我已经使用Arrow提供的Option数据类型一年多了,一开始,我们对自己做了完全相同的问题。答案如下。OptionvsNullable如果您仅将option数据类型与Kotlin中的nullables进行比较,它们几乎是偶数。相同的语义(有或没有一些值),几乎相同的语法(选项使用map,可空值​​使用safecalloperator)。但是当使用Options时,您可以从箭头生态系统中获益!箭头生态系统(功能生态系统

C++ boost::program_options 读取与 getopt_long 兼容的参数

我正在开发现有程序的更新。我正在用boost::program_options替换Posix的getopt_long()。但是我的工作没有按预期进行:我想阅读如下参数:-server=www.example.com-cconfig.txt我尝试了来自boost::program_options::command_line_style的多种可能性,但我找不到可以提供与getopt_long相同的行为的组合。我发现对于参数:-server=www.example.com我需要旗帜:command_line_style::allow_long_disguise|command_line_st

c++ - 使用 boost::program_options 解析 LPTSTR* 命令行参数

我在使用boost:program_options进行命令行解析时遇到问题。解释它的最快方法是这样显示代码:conststd::vectorargs;if(ac>0&&NULL!=av)//acisaULONG{for(inti=0;i解析器ctor应该采用conststd::vectortypedefbasic_command_line_parsercommand_line_parser;typedefbasic_command_line_parserwcommand_line_parser;/**Createsinstanceof'command_line_parser',pass

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++ - 使用不带前缀 "std"且不带 "using namespace std;"的 std::sort() 编译成功

由于sort()是在namespacestd中定义的,因此它必须始终用作std::sort。但以下代码编译正确即使没有std。#include#includeintmain(){std::vectornums={4,3,1,7,2,0};sort(nums.begin(),nums.end());}ideone.com但是这段代码没有。#include#includeintmain(){std::arraynums={4,1,8,9,6};sort(nums.begin(),nums.end());}使用启用了-std=c++11标志的gcc4.8.4。从这两个代码片段中可以清楚地看出

c++ - 排序谓词的链接(例如,对于 std::sort)

您可以将函数指针、函数对象(或boostlambda)传递给std::sort以定义要排序的容器元素的严格弱排序。但是,有时(我已经多次遇到这个问题),您希望能够链接“原始”比较。一个简单的例子是,如果您正在对表示联系人数据的对象集合进行排序。有时您会希望按lastname,firstname,areacode排序.其他时间firstname,lastname-还有其他时间age,firstname,areacode...等等现在,您当然可以为每种情况编写一个额外的函数对象,但这违反了DRY原则-特别是如果每​​个比较都不太重要。看起来你应该能够编写一个比较函数的层次结构——低层的比较

c++ - 为什么 Boost.Range is_sorted 不需要前向迭代器?

C++11算法std::is_sorted和std::is_sorted_until都需要ForwardIterator。然而,Boost.Range版本boost::is_sorted只需要与InputIterator相对应的SinglePassRange。特别是,它委托(delegate)给一个基于迭代器的实现,如下所示:templateinlineIteratoris_sorted_until(Iteratorfirst,Iteratorlast,Compc){if(first==last)returnlast;Iteratorit=first;++it;for(;it!=las