如果我打算让一个Java线程进入睡眠状态,是否有理由更喜欢这些形式之一?
Thread.sleep(x)
Run Code Online (Sandbox Code Playgroud)
要么
TimeUnit.SECONDS.sleep(y)
Run Code Online (Sandbox Code Playgroud) 在我的C++应用程序中,我有一些值作为代码来表示其他值.要翻译代码,我一直在讨论使用switch语句或stl映射.开关看起来像这样:
int code;
int value;
switch(code)
{
case 1:
value = 10;
break;
case 2:
value = 15;
break;
}
Run Code Online (Sandbox Code Playgroud)
地图将是一个,stl::map<int, int>并且翻译将是一个简单的查找,其中代码用作键值.
哪一个更好/更有效/更清洁/接受?为什么?
性能之间或其他方面是否有任何差异:
ptr->a();
Run Code Online (Sandbox Code Playgroud)
和
(*ptr).a();
Run Code Online (Sandbox Code Playgroud)
?
在枚举上索引循环是多么可怕 - 或者它是否完全可以接受?
我有一个枚举定义.文字的值是默认值.指定的值没有任何意义,没有任何意义,将来添加的任何文字的值也没有任何意义.它被定义为限制允许的值并使事情更容易遵循.因此,值始终从0开始并增加1.
我可以这样设置一个循环:
enum MyEnum
{
value1,
value2,
value3,
maxValue
}
for(MyEnum i = value1; i < maxValue; i = static_cast<MyEnum>(i+1)){}
Run Code Online (Sandbox Code Playgroud) 我写了一个我想声明为 const 的方法,但编译器抱怨。我追查了一下,发现是方法的这部分造成了困难:
bool ClassA::MethodA(int x)
{
bool y = false;
if(find(myList.begin(), myList.end(), x) != myList.end())
{
y = true;
}
return y;
}
Run Code Online (Sandbox Code Playgroud)
方法中发生的事情比这更多,但是在剥离所有其他内容后,这部分不允许该方法为 const。为什么stl find算法会阻止方法成为const?它是否以任何方式更改列表?