草庐IT

Count-IF

全部标签

c++ - std::search 是否有一个函数类似于 std::count 对 std::find 的函数?

如果标题听起来很奇怪,这里有另一种解释:如果我有一个范围a,我想计算另一个范围b在范围a中出现了多少次,是否有一个std::函数来做呢?如果不是,是否有一种简单的方法(当然我可以使用std::search手动循环-我说的是更优雅的东西)? 最佳答案 我认为您需要构建自己的。以下是我想到的实现方式。templatesize_tsubsequence_count(Iterator1haystack_begin,Iterator1haystack_end,Iterator2needle_begin,Iterator2needle_end)

c++ - 如何正确使用enable_if?

我需要学习如何使用enable_if。为此,我需要使用enable_if重新实现距离函数。我试过这个:#include#include#include#include#includetemplatetypenamestd::enable_if::value,std::iterator_traits::difference_type>::typemy_distance(Inbegin,Inend,std::input_iterator_tagdummy){typenamestd::iterator_traits::difference_typen=0;while(begin!=end){

c++ - 有没有办法不警告 gcc 中的开关缺少 "COUNT"枚举常量?

如果带有枚举类型参数的开关缺少一些常量并且没有默认分支,则gcc-Wswitch选项会导致类似的警告warning:enumerationvalue'WHATEVER'nothandledinswitch然而,我们的许多开关是这样的:enumfoo{FOO_ONE,FOO_TWO,FOO_COUNT};其中FOO_COUNT从不作为值出现,但用于了解已定义并可能出现在变量中的值的数量。因为我们正在使用枚举值索引一个数组或对其进行位打包,并且需要检查它是否适合或其他什么。因此,处理所有值的枚举应该不包含这个常量。有没有办法保留该警告,但避免使用这种特殊值?即switch(foo){cas

C++11 Dynamic Cast If Else Chain -> 开关

考虑以下几点:structB{};templatestructD:B{Tt;}voidg(inti){...}voidg(strings){...}voidg(charc){...}voidf(B*b){if(dynamic_cast*>(b)){g(dynamic_cast*>(b)->t);}elseif(dynamic_cast*>(b)){g(dynamic_cast*>(b)->t);}elseif(dynamic_cast*>(b)){g(dynamic_cast*>(c)->t)}elsethrowerror;};这里只有三种可能的T类型——int、string、char

c++ - 无限递归 `enable_if`

在尝试为另一种类型T编写wrapper类型时,我遇到了一个相当令人讨厌的问题:我想定义一些二元运算符(例如+)将wrapper上的任何操作转发给底层类型,但我需要这些运算符接受任何涉及wrapper的潜在组合:wrapper()+wrapper()wrapper()+T()T()+wrapper()天真的方法涉及直接编写所有潜在的重载。但我不喜欢编写重复的代码并且想要更多的挑战,所以我选择使用一个非常通用的模板来实现它并使用enable_if限制潜在的类型。我的尝试显示在问题的底部(抱歉,这是我能想到的最小值)。问题是它会遇到无限递归错误:为了评估test()+test(),编译会查看

c++ - Visual Studio 2010 调试 "if (var == NULL)"未触发

已解决-构造函数问题MatthewFlaschen和MichaelBurr指出Node(int)的重载构造函数调用Node()不起作用的问题because...谢谢大家!我已经构建了一个程序(我正在调试它)并且遇到了一个奇怪的问题......一个`if`语句没有在它应该被触发的时候被触发......这是一个学校项目,我们必须构建一个具有至少一个“优化”功能的AVL树。我确信并测试过`rdown`和`ldown`起作用(作为平衡因素)——树不是完全平衡的。相反,它基于分支的高度(即-`balance()`应该只返回(1,0,-1)否则它是不平衡的。我希望这些信息足以解决这个奇怪的问题..

c++ - enable_if'ed 模板化模板构造函数的类型签名?

我通常先声明我的类和模板,然后再定义它们的方法(当然是在同一个头文件中)。我只是觉得这样更容易阅读。好吧,我遇到过这样一种情况,我无法找出在类外定义中使用的有效类型签名。这是我正在做的一个简化示例,它说明了问题:templatestructFoo{Foo(Ta,Tb);template>>Foo(Iteratorfirst,Iteratorlast);};templateFoo::Foo(Ta,Tb){...}templatetemplateFoo::Foo(Uf,Ul){...}我在WHAT_GOES_HERE槽中尝试了很多方法来尝试获得匹配的签名,但我一直失败。我需要enable_

c++ - 优化头痛 - 从查找表中删除 if's

我正在尝试优化以下代码,这是我的应用程序中的瓶颈。它的作用:它采用double值value1和value2并尝试找到包含校正因子的最大值。如果两个值之间的差异大于5.0(LUT按因子10缩放),我可以取这两个值的最大值。如果差异小于5.0,我可以使用LUT中的校正因子。有没有人知道什么是这段代码的更好风格?我不知道我在哪里浪费了时间-是大量的ifs还是乘以10?doublevalue1,value2;//LookupTablescaledby10for(ln(1+exp(-abs(x)))),whichisalmost0forx>5andsymmetricalaround0.LUT[0

c++ - constexpr if with initializer 由标准保证吗? 'constexpr(constexpr auto x = f(); x) { }'

我找不到任何关于新C++17if初始化语法的信息和“constexprif”在:http://open-std.org/JTC1/SC22/WG21/docs/papers/2016/p0128r1.html不过,Clang-HEAD支持该语法...constexprautof(){returntrue;}intmain(){ifconstexpr(constexprautox=f();x){}}在线代码在这里->http://melpon.org/wandbox/permlink/dj3a9ChvjhlNc8nr是constexprif带有标准保证的初始值设定项,如constexpr

c++ - 如何用 C++ 编写 "meta if else if.."?

我只是在学习C++元编程的基础知识,我想看看其他人如何解决以下问题会很高兴。此外,很高兴看到使用Boost元编程库的解决方案,因为我认为它们是我的黑暗角落。所以问题是,可以更优雅地重写吗?假设我们有以下结构:templatestructtype_factory{typedeftypenametype_factory_impl::typetype;};这个结构应该是typedeftype,这取决于size的值。type_factory_impl是type_factory的实现。用于确定类型的算法是:if(size%bits::value==0)typedefunsignedlonglon