草庐IT

java - 重置计数器或让它增加并使用模数是否更有效

假设您需要跟踪一个方法被调用的次数,并在它被调用n次时打印一些东西。什么是最有效的:使用长变量_counter并在每次调用该方法时增加它。每次调用你测试相等性“_counter%n==0”使用一个int变量_counter并在每次调用该方法时增加它。当_counter=n时,打印消息并将变量_counter重置为0。有些人会说差异可以忽略不计,您可能是对的。我只是好奇最常用的方法是什么 最佳答案 在这种特殊情况下,由于您无论如何都需要一个if语句,所以我会说您应该在达到计数时将其设置为零。但是,对于每次都使用该值并且只想“当我们达到

c++ - 返回对象混淆

我一直在学习C++,但我无法理解成员函数/方法返回对象的方式。我正在阅读“21天自学C++”一书。所以,我了解类和对象,只是不太了解返回对象。我将提供一个示例(目前正在学习运算符重载)。constCounter&Counter::operator++(){++itsVal;return*this;}我只是对返回类型感到很困惑。此方法表示它应该返回对计数器对象的引用,但是当对象被取消引用时return*this;我们不只是返回一个Counter类的对象吗?为什么函数头说我们正在返回对计数器对象的引用?为什么方法头不直接说返回类型是Counter类型的对象呢?这是我感到困惑的地方:\我的想

C++ __COUNTER__ 定义

我的电脑上安装了两个版本的C++编译器。其中一个可以识别__COUNTER__宏,而另一个则不能。在做了一些研究以使程序在两者中编译之后,我还没有遇到__COUNTER__的宏定义。这是编译器完成的一些特殊宏,还是我可以将__COUNTER__的定义复制到我的源代码中,如果我可以复制它,我需要什么代码。 最佳答案 __COUNTER__是几个常见编译器中的内置项。无法手动定义。如果您遇到不支持它的编译器,最好的选择可能是在将代码送入编译器之前通过支持它的预处理器运行您的代码。 关于C++

行为类似于 __COUNTER__ 宏的 C++ 结构

这个问题在这里已经有了答案:DoesC++supportcompile-timecounters?(11个答案)关闭6年前。我有一组C++类,每个类都必须声明一个唯一的顺序ID作为编译时常量。为此,我使用了__COUNTER__内置宏,它转换为一个整数,每次出现它都会递增。id不需要遵循严格的顺序。唯一的要求是它们是顺序的并且从0开始:classA{public:enum{id=__COUNTER__};};classB{public:enum{id=__COUNTER__};};//etcetera...我的问题是:有没有办法使用C++构造(例如模板)实现相同的结果?

c++ - 可重复使用的预处理器 __COUNTER__

我正在做一些模板元编程,大部分只是编写我自己的编译时间列表,但我也有一些预处理器魔法,如果可能的话,我想用它来使事情变得更容易。我想做的是创建仿函数的编译时列表。该部分已完成,但用于简化创建(并添加到列表)的宏尚未完成。一个简单的例子:templatestructnode{typedefFunctorhead;typedefTailtail;};templatestructpush_back{typedefnodelist;};structunit0{};#defineAUTO_FUNCTION(name)structtest_functor_##name{\staticvoidrun

C++ 重载运算符、赋值、深度复制和加法

我正在重新阅读我的一些旧大学教科书时正在对运算符重载进行一些探索,我认为我误解了一些东西,所以希望这对某些人来说会是一个很好的简单声誉回答者。如果这是重复的,请指出正确的方向。我创建了一个简单的计数器类,它(在这个阶段)有一个成员val(一个int)。我已经初始化了其中三个计数器,varOne到varThree,并希望第三个计数器是前两个计数器的总和(例如,在下面的代码中将varThree.val设置为5)counter::counter(intinitialVal){val=initialVal;//pVal=newint;//*pVal=10;//anarbitrarynumber

c++ - 标准 vector 大小调整

我有一些std::vector,我必须用一些默认值调整它的大小。这是代码:staticintCounter=0;classData{/*...*/Data(){Counter++;std::coutmArray;for(inti=0;i据我了解,在插入200个项目后,我可以使用resize函数调整它的大小,该函数为每个新元素采用新的大小和默认值。当我运行该程序时,我看到:012...199200Resizing201为什么在调整大小后只插入了1个项目? 最佳答案 当添加的条目是复制构造时,您只能看到来自默认构造函数的计数。您还必须添

c++ - 编译时的整数值

我必须在不同的文件中用一些整数id写一些常量。例如:#defineMESSAGE_FIRST0在其他文件中:#defineMESSAGE_ANOTHER1有什么方法可以在编译时自动获取那个id?像这样的东西:#defineMESSAGE_AUTOGetNextId()我不能在这里使用枚举,因为这个指令将在不同的文件中。谢谢。附注海湾合作委员会,Linux 最佳答案 你可以做一个编译时计数器,继承和函数重载:templatestructCount{booldata[n];};templatestructCounter:publicCo

c++ - 已弃用 API 调用的编译时检测?

C++11中是否有任何新的、很酷的功能允许我们在编译时检测现在标记为已弃用的API是否实际被某人调用?从我读到的有关新static_assert功能的内容来看,它似乎不够灵活,无法用于此类分析。但是我们还有什么可以用的吗?可选地,boost中是否有任何允许这种编译时检查的东西? 最佳答案 对于C++14,您将有以下选择:#includevoidfoo(intv){std::coutClang给出编译输出(here):main.cpp:12:10:warning:'counter'isdeprecated[-Wdeprecated-d

c++ - 为什么要通过引用返回?

我正在阅读“SAMS在21天内自学C++”,我遇到了一个我似乎无法理解的例子:#includeusingnamespacestd;classCounter{public:Counter(){itsVal=0;}constCounter&operator++();intGetItsVal(){returnitsVal;}private:intitsVal;};constCounter&Counter::operator++(){++itsVal;return*this;}intmain(){Counteri;Countera=++i;cout为什么在++运算符的声明中有一个“&”?我理解