有没有之间的性能差异i++而++i如果结果不能用?
我们有一个问题是Ci++和++i C之间有性能差异吗?
C++的答案是什么?
是否有差异++i,并i++在一个for循环?它只是一个语法的东西吗?
以下for循环产生相同的结果,即使一个使用后增量和另一个预增量.
这是代码:
for(i=0; i<5; i++) {
printf("%d", i);
}
for(i=0; i<5; ++i) {
printf("%d", i);
}
Run Code Online (Sandbox Code Playgroud)
我为两个'for'循环得到了相同的输出.我错过了什么吗?
我正在编写一个程序,其中迭代器用于循环std :: vector.有人告诉我,在for语句中执行++会导致更高效的代码.换句话说,他们说:
for ( vector<string>::iterator it=my_vector.begin(); it != my_vector.end(); ++it )
Run Code Online (Sandbox Code Playgroud)
比跑得快
for ( vector<string>::iterator it=my_vector.begin(); it != my_vector.end(); it++ )
Run Code Online (Sandbox Code Playgroud)
这是真的?如果是,效率提升背后的原因是什么?它所做的全部++/++是将迭代器移动到向量中的下一个项目,不是吗?
可能重复:
为什么在语句中的其他地方没有使用值的情况下使用++ i而不是i ++?
C++中的增量 - 何时使用x ++或++ x?
i++ vs. ++i
Run Code Online (Sandbox Code Playgroud)
什么时候在真实场景中使用?
可能的重复:
i ++或++ i的效率更高?
我们如何解释表达式的结果(++ x)+(++ x)+(++ x)?
循环中i ++和++ i之间的区别?
我正在尝试这两个程序:
void fun(){
int k = 0;
int i= 10;
k = (i++)+(++i);
cout << k << endl;
}
Run Code Online (Sandbox Code Playgroud)
输出= 22,因为i ++将给出10而++我将评估为12.
但
void fun(){
int k = 0;
int i = 10;
k = (++i)+(++i);
cout << k << endl;
}
Run Code Online (Sandbox Code Playgroud)
输出= 24
它应该是23我猜,还是有些东西我无法看到?
在Flash中测试此代码:
var i:int = 0;
for (var j:int = 0; j < 5000000; j++)
{
i=i+1;
}// use about 300ms.
i = 0;
for (var j:int = 0; j < 5000000; j++)
{
i++;
}// use about 400ms
i = 0;
for (var j:int = 0; j < 5000000; j++)
{
++i;
}// use about 400ms too
Run Code Online (Sandbox Code Playgroud)
为什么i=i+1ActionScript 3中的速度更慢?
对不起,我犯了一些错误.上面的代码使用的时间相同.但如果把它投入使用,结果会有所不同.
var i:int;
var j:int;
var startTime:Number;
function func1():void
{
i = i + 1;
}
function func2():void
{ …Run Code Online (Sandbox Code Playgroud) 我有两个int vectors喜欢a[100],b[100].
计算汉明距离的简单方法是:
std::vector<int> a(100);
std::vector<int> b(100);
double dist = 0;
for(int i = 0; i < 100; i++){
if(a[i] != b[i])
dist++;
}
dist /= a.size();
Run Code Online (Sandbox Code Playgroud)
我想问一下,有更快的方法在C++中进行此计算或如何使用STL执行相同的工作吗?
我写了一个代码来打印所有有效的n对括号组合.但是,在我第一次尝试时,算法输出所有组合两次,即.代码是:
public static void solve(char[] string, int open, int closed, int index)
{
if (open < 0 || closed < open) {
return;
}
if (open == 0 && closed == 0) {
System.out.println(string);
}
if (open > 0) {
string[index] = '(';
solve(string, --open, closed, ++index);
}
if (closed > open) {
string[index] = ')';
solve(string, open, --closed, ++index);
}
}
Run Code Online (Sandbox Code Playgroud)
我花了很多时间才能看出出了什么问题.我认为代码进入最后一个if分支比它应该更多.然后,在尝试不同的事情时,我意识到了变化
solve(string, --open, closed, ++index);
Run Code Online (Sandbox Code Playgroud)
至
solve(string, open-1, closed, ++index);
Run Code Online (Sandbox Code Playgroud)
改变了结果.这导致了一个java.lang.ArrayIndexOutOfBoundsException.最后,我用相应的算术运算(例如,++indexto index+1)替换了所有预增量操作,并且代码正确运行.
我的问题是,不应该 …
考虑以下两个例子.
class ClassOne
{
//class definition is here
};
std::vector< ClassOne > myListOfObjects;
std::vector< ClassOne >::const_iterator iter = myListOfObjects.begin();
Example 1:
for( ; iter < myListOfObjects.end(); **++iter**)
{
//some operations
}
OR
Example 2:
for( ; iter < myListOfObjects.end(); **iter++**)
{
//some operations
}
Run Code Online (Sandbox Code Playgroud)
哪一个更快?循环上下文中的++ iter或iter ++.
从Brian的帖子复制(使问题更简洁).
我有一个数组,大小可以达到10000.它只有1/2/3/4.我需要找到阵列中有多少1s,2s,3s和4s.这样做的最快方法是什么?我的使用语言是Java.我的代码 -
for(int i=0; i<myArray.length;i++){
int element = myArray[i];
if(element == 1){
onesCount++;
}
else if(element == 2){
twosCount++;
}
else if(element == 3){
threesCount++;
}
else
foursCount++;
}
Run Code Online (Sandbox Code Playgroud)
我希望有一个很好的解决方案.