草庐IT

VARIANT_BOOL

全部标签

c++ - vector<bool> 可以由 int 初始化吗

我想枚举[0,31]的bool表示并将其存储在tries中供以后使用。staticconstintN=5;vectortries(N);for(inti=0;iinitializedbyint?//soIdon'thavetodobitoperationfor(intt=0;t 最佳答案 std::vector不能这样做,但是std::bitset能够。由于vector的大小在您的情况下是恒定的,因此您应该使用std::bitset.只需使用您想要的非负整数值对其进行初始化即可。请注意bitset不提供(或模仿)Container接

c++ - 检查 bool vector (范围)是否等于 1 和 0 的序列

我之前拥有的是一串1和0,我可以简单地检查某个范围是否等于我想要的序列:if(myString.substr(0,4)=="1110")...出于内存原因,我将这个字符串变成了vector,因为vector中的一个bool只占用1位而不是1字节。现在,这里有一个问题。我想做与substr相同的比较.可能没有类似的东西:if(myVector[0]==true&&myVector[1]==true&&...)或vectortmpVector;tmpVector.push_back(true);tmpVector.push_back(true);...if(myVector==tmpVec

C++ 从 bool 到字符串的隐式转换

我有以下代码,在VisualC++2012中编译。#includevoidfunc(std::stringstr){}voidmy_func(){func(false);}bool值“false”被隐式传递给字符串构造函数string(constchar*_Ptr)然后指针为空(因为false=0)。为什么会编译,是否应该按照C++11标准编译? 最佳答案 MSVC错误地将false视为空指针常量。然而,根据N4140,§4.10[conv.ptr]/1(强调我的):Anullpointerconstantisanintegerli

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++ - operator<< with boost::variant 是如何实现的

我明白boost::variant是这样实现的templatestructvariant{std::aligned_union::typebuffer;....};我们如何制作operator对于像这样的结构,打印缓冲区中存储的类型并将其传递给operator对于cout?为此,我们需要知道存储在缓冲区中的元素的类型,对吧?有没有办法知道这一点?此外,我正在寻找对此类实现的解释(如果存在的话)。不仅仅是它的存在以及我如何使用它。 最佳答案 Boost有一个apply_visitor函数,它接受一个通用函数对象并将变量的类型传递给它。

c++ - 如何在 C++ 中创建一个连续的 bool vector ?

如何制作bool的连续vectorC++中的数量?我读了很多关于使用std::vector的警告我想将面具存储到std::vector.为了使我的目的更明确一点,我想对我的std::vector应用统计信息对于bool中的那些元素为真的vector。为了以最佳性能做到这一点,我希望vector是连续的。 最佳答案 您需要知道人们认为std::vector存在哪些具体问题,因为它们不一定适用于您的情况。其中最重要的可能是它不一定是连续的。这里contigous可能用词不当。为整个vector分配的内存可能仍处于连续block中,但是,

c++ - std::list<bool> 的实现

是否std::list具有类似的疯狂,像std::vector这样的明确特化?是std::vector唯一受此影响的C++标准库容器?是否有某种traits我可以用来检测特化吗? 最佳答案 如标准所示,std::vector有它自己的段落来规定它的实现。std::list的要求有一个不存在,但这并不意味着不允许实现不但是有一个。据我所知,std::vector是唯一需要具有bool特化的容器. 关于c++-std::list的实现,我们在StackOverflow上找到一个类似的问题:

c++ - 是否可以定义稍后可以评估的 bool 表达式?

希望实现一种动态表达式,稍后我可以在调用时计算bool值。condition&&=condition2;//notevaluatedjustyetcondition||=condition3;if(condition)//evaluatednowdothis;elsedothis;例如,我在我的代码中使用相同的条件,如果我可以只调整一个语句或添加更多语句,即使在程序运行时也会更容易。conditions=(x>50&&y>200)&&(type==MONKEY);conditions&&=(x稍后在代码中if(conditions)cout编辑:应在if语句中评估条件。

c++ - 在这个例子中,std::variant 是如何变成 valueless_by_exception 的?

这是受cppreference中示例启发的示例structS{operatorint(){throw42;}};intmain(){variantv{12.f};//OKcout(S());//vmaybevalueless}catch(...){}cout对于一个编译器,我试过它的输出false,true意味着emplace导致变体变得毫无值(value)我不明白这是怎么发生的。特别是我根本不明白为什么emplace被调用,我希望程序甚至不会调用它,因为从S到int参数的转换会抛出。 最佳答案 注意相关std::variant::

c++ - 在最佳时间从 _variant_t 获取 char*

这是我想要加速的代码。它从ADO记录集中获取值并将其转换为char*。但这很慢。我可以跳过_bstr_t的创建吗?_variant_tvar=pRs->Fields->GetItem(i)->GetValue();if(V_VT(&var)==VT_BSTR){char*p=(constchar*)(_bstr_t)var; 最佳答案 BSTR的前4个字节包含长度。您可以遍历并获取每个其他字符(如果是unicode)或每个字符(如果是多字节)。某种memcpy或其他方法也可以。IIRC,这可能比W2A或类型转换(LPCSTR)(_b