草庐IT

vec_bool

全部标签

c++ - 字符串文字匹配 bool 重载而不是 std::string

我正在尝试编写一个具有一些重载方法的C++类:classOutput{public:staticvoidPrint(boolvalue){std::cout现在假设我按如下方式调用该方法:Output::Print("HelloWorld");这是结果True那么,为什么,当我定义了该方法可以接受boolean值和字符串时,当我传入一个非boolean值时,它是否使用boolean重载?编辑:我来自C#/Java环境,对C++很陌生! 最佳答案 "HelloWorld"是“12个数组constchar”类型的字符串文字,可以转换为“

c++ - C++中的 bool 表达式(语法)解析器

我想解析一个bool表达式(在C++中)。输入形式:aandbxor(canddoraandb);我只是想把这个表达式解析成一棵树,知道优先规则(not,and,xor,or)。所以上面的表达式应该是这样的:(aandb)xor((candd)or(aandb));到解析器。树的形式是:aandborcanddxoraandb输入将通过命令行或字符串的形式。我只需要解析器。是否有任何资源可以帮助我做到这一点? 最佳答案 这是一个基于BoostSpirit的实现。因为BoostSpirit会根据表达式模板生成递归下降解析器,因此遵守“

c++ - C++中的 bool 表达式(语法)解析器

我想解析一个bool表达式(在C++中)。输入形式:aandbxor(canddoraandb);我只是想把这个表达式解析成一棵树,知道优先规则(not,and,xor,or)。所以上面的表达式应该是这样的:(aandb)xor((candd)or(aandb));到解析器。树的形式是:aandborcanddxoraandb输入将通过命令行或字符串的形式。我只需要解析器。是否有任何资源可以帮助我做到这一点? 最佳答案 这是一个基于BoostSpirit的实现。因为BoostSpirit会根据表达式模板生成递归下降解析器,因此遵守“

c++ - 在 std::vector<bool> 上调用 data() 会发生什么?

C++11已实现data()std::vector上的成员函数,它给你一个指向内存数组的指针。这是否意味着模板特化std::vector也有这个成员(member)?由于此特化不以bool*的形式存储数据,调用data()会有什么样的行为?? 最佳答案 它不会编译,除非你的实现有一个非标准的扩展。std::vector的特化,如C++1123.3.7/1中所述,不声明data成员(member)。 关于c++-在std::vector上调用data()会发生什么?,我们在StackOve

c++ - 在 std::vector<bool> 上调用 data() 会发生什么?

C++11已实现data()std::vector上的成员函数,它给你一个指向内存数组的指针。这是否意味着模板特化std::vector也有这个成员(member)?由于此特化不以bool*的形式存储数据,调用data()会有什么样的行为?? 最佳答案 它不会编译,除非你的实现有一个非标准的扩展。std::vector的特化,如C++1123.3.7/1中所述,不声明data成员(member)。 关于c++-在std::vector上调用data()会发生什么?,我们在StackOve

c++ - VS2012 在 64 位目标中 vector <bool> 的性能不佳

对此类进行基准测试:structSieve{std::vectorisPrime;Sieve(intn=1){isPrime.assign(n+1,true);isPrime[0]=isPrime[1]=false;for(inti=2;i当调用大量构造函数时,64位二进制与32位版本(发布版本)的性能(CPU时间)差3倍以上,例如Sieves(100000000);我测试了sizeof(bool)它是1两个版本。当我替换vector与vector64位和32位版本的性能相同。这是为什么呢?这里是S(100000000)的运行时间(Release模式,先32位,后64位)):vecto

c++ - VS2012 在 64 位目标中 vector <bool> 的性能不佳

对此类进行基准测试:structSieve{std::vectorisPrime;Sieve(intn=1){isPrime.assign(n+1,true);isPrime[0]=isPrime[1]=false;for(inti=2;i当调用大量构造函数时,64位二进制与32位版本(发布版本)的性能(CPU时间)差3倍以上,例如Sieves(100000000);我测试了sizeof(bool)它是1两个版本。当我替换vector与vector64位和32位版本的性能相同。这是为什么呢?这里是S(100000000)的运行时间(Release模式,先32位,后64位)):vecto

c++ - C++中 bool 值的所有可能值是什么?

这个问题并不像看起来那么明显,而且我很难找到关于bool的大量信息。输入标准。根据C++11标准,与bool相关的保证是什么?输入关于:存储:需要多少空间,忽略对齐?对将存储的值表示true是否有任何要求?和false?取值:让b类型为bool,断言(b==true)||(b==false)捕获?是(false格式良好,是否成立? 最佳答案 bool类型在第3.9.1节“基本类型”中进行了描述。这里相关的是第6段中的一句话:Valuesoftypeboolareeithertrueorfalse.47引用脚注47提供了一些有趣的附加

c++ - C++中 bool 值的所有可能值是什么?

这个问题并不像看起来那么明显,而且我很难找到关于bool的大量信息。输入标准。根据C++11标准,与bool相关的保证是什么?输入关于:存储:需要多少空间,忽略对齐?对将存储的值表示true是否有任何要求?和false?取值:让b类型为bool,断言(b==true)||(b==false)捕获?是(false格式良好,是否成立? 最佳答案 bool类型在第3.9.1节“基本类型”中进行了描述。这里相关的是第6段中的一句话:Valuesoftypeboolareeithertrueorfalse.47引用脚注47提供了一些有趣的附加

c++ - 为什么需要强制转换为 bool 值?

templateinlineInputIteratorfind_if(InputIteratorfirst,InputIteratorlast,Predicatepred,input_iterator_tag){while(first!=last&&!bool(pred(*first)))++first;returnfirst;}我碰到了thissnippet在GCC4.7.0附带的C++标准库的实现的源代码中。这是输入迭代器的find_if的特化。我清理了前导下划线以使其更具可读性。为什么他们在谓词上使用bool类型转换? 最佳答案