草庐IT

setting_value

全部标签

c++ - boost::asio signal_set 处理程序仅在捕获到第一个信号后执行,并忽略相同类型的连续信号

我有一个程序,我想通过发送SIGINT将一些数据写入文件而不是立即退出来停止它。但是,如果程序的用户再次发送SIGINT,则程序应立即退出并忘记将数据写入文件。出于可移植性的原因,我想为此目的使用boost::asio。我最初的(简化的)方法(见下文)没有奏效。这是不可能的还是我遗漏了什么?处理程序似乎只被调用一次(打印出消息)并且程序总是在循环达到最大迭代次数时停止。voidhandler(constboost::system::error_code&error,intsignal_number){if(!error){staticboolfirst=true;if(first){s

c++ - set<string> 像数字一样排序

我尝试将字符串集作为数字进行排序。每个字符串长度可以达到50,它们实际上并不只是由数字组成。据我了解并在论坛中搜索,c++默认按字典顺序对字符串进行排序。有没有办法更改此默认行为以满足我的需要?我需要的是如下所示:setsolution;solution.insert("12X451");solution.insert("X23454");solution.insert("12345");solution.insert("12315");solution.insert("123111");solution.insert("5231");for(autos:solution){cout这

c++ - 在 C++ 中定义虚拟 get 和 set 函数被认为是一种好的做法吗?

如果我有一个简单的2级类层次结构,例如这个://level1classSpare_Part{private:stringname;doubleprice;public:Spare_Part();stringgetName(){returnname;}doublegetPrice(){returnprice;}virtualintgetQuantity(){return-1;};//mayalsodefineitaspurevirtual};//level2classOn_hand:publicSpare_Part{private:intquantity;stringlocation;p

c++ - 没有匹配的成员函数来调用 child.value

当我尝试编译下面的代码时出现错误:src/main.cpp:51:48:error:nomatchingmemberfunctionforcallto'child_value'std::cout我不明白的是我能够在上面的循环中使用它。我只能假设它希望我使用kv.second.child_value(kv.second);代替。但是我希望它在for(auto&eb:mapb){.返回的xml上运行这段代码。#include"pugi/pugixml.hpp"#include#include#includeintmain(){conststd::maptagMap{{"descriptio

c++ - "warning C4800: ' int' : forcing value to bool 'true' or 'false' "不同场景下的不同行为

我无法理解此警告的以下行为。case1:boolread=(33&3);//NoWarningissuedbyvs2013case2:intb=33;boolread=(b&3);//NowcompilerisgeneratingC4800warning.为什么编译器在情况2中生成警告,而在情况1中不发出任何警告。 最佳答案 C4800是一个性能警告-在运行时将整数强制转换为bool会产生成本。这与逻辑正确性无关。最常见的强制转换(和警告)发生在您与使用整数(VC++中的BOOL)作为bool值的代码交互时。第一个代码段中的编译时强

c++ - C++初始化中的 "several values"是什么?

这是一道关于C++Primer(5thedition)Chapter3.2,Page84,85的问题。Whenwehaveasingleinitializer,wecanuseeitherthedirectorcopyformofinitialization.Whenweinitializeavariablefrommorethanonevalue,suchasintheinitializationofs4,wemustusethedirectformofinitialization:strings4(10,'c');//s4is"cccccccccc"strings5="hiya";

c++ - std::set 迭代器的返回类型冲突

这是今天让我感到困惑的第二个编译器错误。对于下面的代码,gcc以某种方式提示该代码具有返回迭代器的函数return_iter返回冲突类型std::_Rb_tree_iterator然后std::_Rb_tree_const_iterator,但它们都不应该是const迭代器,因为集合不是const。谁能解释为什么std::end()方法在非const左值上调用时返回const_iterator?下面粘贴了完整的代码。注意我只在使用gcc编译时出现此错误.当我用clang(AppleLLVMversion8.0.0(clang-800.0.38))编译时,这个错误没有出现。我使用的gcc

c++ - 对于 std::set 中给定的下限和上限,如何在映射中获取一系列值?

假设我有以下代码#include#includeintmain(){std::setmyset;intinf,sup;inf=25;sup=60;for(inti=1;i我试图弄清楚标准库是否提供了任何方法或方法组合,可以让我获得两个迭代器it_l,it_u从而覆盖[inf,sup]范围.我曾尝试使用lower_bound、upper_bound,但我误解了它们的工作原理。这个想法是避免编写循环(因为我知道我可以为此任务编写自己的函数,但也许有一些我不知道的替代方法)。更新:预期输出的一些例子是(在我的例子中)inf=25;sup=60我期望{30,40,50,60}如果相反inf=3

c++ - 奇怪的迭代器行为 + unordered_set 的段错误

我有一个类有一个unordered_set成员如下:我有以下类定义,后面是它的常规构造函数和复制构造函数,以及一些其他修改集合的函数(删除了不相关的代码段,因为类很长):#include#include#includeclassHexBoard{public:HexBoard(intn);HexBoard(constHexBoard&obj);std::unordered_setemptyPositions();private:std::unordered_setempty_positions;};HexBoard::HexBoard(intn){for(inti=0;i=nempty

C++中map和set的使用

(图片来源于网络)🎈个人主页:🎈:✨✨✨初阶牛✨✨✨🐻强烈推荐优质专栏:🍔🍟🌯C++的世界(持续更新中)🐻推荐专栏1:🍔🍟🌯C语言初阶🐻推荐专栏2:🍔🍟🌯C语言进阶🔑个人信条:🌵知行合一🍉本篇简介:>:讲解C++中的新容器,set与map对于常用的接口介绍。金句分享:✨人攀明月不可得,月行却与人想随。✨目录一、set1.1set特点介绍1.2set使用1.21构造函数1.22升/降序1.23其他接口(1)**容量(`capacity`)相关:**(2)**Modifiers(修改)**(3)**查找**二、map2.1map的特点介绍2.2map的使用✨构造函数🍔[]的作用三、实例🍭两个数组的