相关疑难解决方法(0)

for循环中的后缀和前缀增量运算符

可能重复:
循环中i ++和++ i之间的区别?

任何人都可以解释这些之间的区别:

for(unsigned col = 0; col < n; ++col, num_to_fill >>= 1U)
{

    for(unsigned row = num_to_fill; row < (1U << n); row += (num_to_fill * 2))
    {
        std::fill_n(&output[col][row], num_to_fill, 1);
    }
}
Run Code Online (Sandbox Code Playgroud)

for(unsigned col = 0; col < n; col++, num_to_fill >>= 1U)
{

    for(unsigned row = num_to_fill; row < (1U << n); row += (num_to_fill * 2))
    {
        std::fill_n(&output[col][row], num_to_fill, 1);
    }
}
Run Code Online (Sandbox Code Playgroud)

什么时候col=0,ex.1 Output[col][row]将在output[1][row]和ex.2 Output[col][row]output[0][row] …

c++ loops

17
推荐指数
1
解决办法
2万
查看次数

什么更有效,i ++或++ i?

确切重复:在C++中i ++和++ i之间是否存在性能差异?
确切重复:循环中i ++和++ i之间的区别?


什么更有效,i ++或++ i?

我只在Java和C/C++中使用过这个,但我真的要求实现它的所有语言.

在大学里我有一位教授告诉我们++我更有效率,但已经有几年了,我想从Stack Overflow社区获得意见.

c++ java performance pre-increment post-increment

15
推荐指数
4
解决办法
2万
查看次数

i ++与++ i在JavaScript for循环中

由于JSLint,我几乎总是使用i += 1增加JavaScript for循环,但对于快速和脏脚本,我使用i++.
但是,我在其他人的代码中看到了很多for循环,在这些代码中,他们i通过++i代替来增加.

据我所知,i++和之间没有区别++i,而且jsPref在性能上没有差别.
因此,我想知道做的惯例++i来自哪里以及为什么人们倾向于这样做.

有谁知道为什么很多JS编码器往往喜欢++ii++一个递增计数器循环什么时候?
谢谢.

javascript for-loop pre-increment post-increment

8
推荐指数
3
解决办法
4153
查看次数

最长运行C#的索引

我试图解决这个问题:编写一个函数,找到字符串中最长运行的从零开始的索引.运行是相同字符的连续序列.如果有多个具有相同长度的运行,则返回第一个的索引.

例如,IndexOfLongestRun("abbcccddddcccbba")应该返回6,因为最长的运行是dddd,它首先出现在索引6上.

按照我的所作所为:

private static int IndexOfLongestRun(string str) 
    {
        char[] array1 = str.ToCharArray();
        //Array.Sort(array1);
        Comparer comparer = new Comparer();
        int counter =1;
        int maxCount = 0;
        int idenxOf = 0;

        for (int i =0; i<array1.Length-1 ; i++)
        {
            if (comparer.Compare(array1[i],array1[i+1]) == 0)
            {
                counter++;
            }
            else {
                if(maxCount < counter)
                {
                    maxCount = counter;
                    idenxOf = i - counter + 1;
                }
                counter = 1;
            }
        }
        return idenxOf ;  
    }
}

public class Comparer : IComparer<char>
{
    public int …
Run Code Online (Sandbox Code Playgroud)

c# algorithm icomparer

7
推荐指数
1
解决办法
2176
查看次数


java复杂语句执行顺序

System.out.println(info + ": " + ++x);
Run Code Online (Sandbox Code Playgroud)

这个陈述相当于

x++;
System.out.println(info + ": " + x);
Run Code Online (Sandbox Code Playgroud)

System.out.println(info + ": " + x++);
Run Code Online (Sandbox Code Playgroud)

相当于

System.out.println(info + ": " + x);
x++;
Run Code Online (Sandbox Code Playgroud)

由于JVM一次只能处理一个语句,它是否会像这样划分这些语句?

java

6
推荐指数
1
解决办法
87
查看次数

c ++迭代器卡在第一个值

我正在学习c ++而且我遇到了一些我无法解释的行为.下面的两段代码提供了不同的结果,而我希望它们是等价的:

success = true;
vector<instruction>::const_iterator i;
for (i = instructions.begin(); i != instructions.end(); ++i) {
    bool up = update(*i);
    success = success && up;        
}
Run Code Online (Sandbox Code Playgroud)

success = true;
vector<instruction>::const_iterator i;
for (i = instructions.begin(); i != instructions.end(); ++i) {
    success = success && update(*i);        
}
Run Code Online (Sandbox Code Playgroud)

我的印象是第二个版本总是采用迭代器的初始值.有人可以解释一下原因吗?

c++

6
推荐指数
1
解决办法
311
查看次数

在C++中,A + = B优于A = A + B,同样地,++ A是A ++?

在C++中,A + = B优于A = A + B,同样地,++ A是A ++?

我知道"++ A"预增量至少与"A ++"后增量一样快.这里讨论了许多地方,包括这里这里.同样,预期A + = B至少与A = A + B一样快,如此处所示.

我在看这个++:

//From https://herbsutter.com/2013/05/13/gotw-2-solution-temporary-objects/
T T::operator++(int)() {
auto old = *this; // remember our original value
++*this;          // always implement postincr in terms of preincr
return old;       // return our original value
}
Run Code Online (Sandbox Code Playgroud)

我的理由是,在最坏的情况下(可能来自复杂的对象类型)A = A + B必须检索并存储A并在将其保存回原始A位置之前添加B,而A + = B将采用B并添加直接到A.我的推理是否正确?

期望基本类型在编译时重新排列为相同,并且这实际上仅适用于需要运算符重载的复杂对象.

这是否一般扩展到大多数命令式语言?

c++

6
推荐指数
2
解决办法
3982
查看次数

++ i和i ++之间的区别

可能的重复:
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我猜,还是有些东西我无法看到?

c++

5
推荐指数
2
解决办法
1499
查看次数

if语句中i ++与i = i + 1的区别是什么?

对于第一个代码,

int i = 1;
while (i < 10)
    if ((i++) % 2 == 0)
        System.out.println(i);
Run Code Online (Sandbox Code Playgroud)

系统输出:3 5 7 9

对于第二个代码,

int i = 1;
while (i < 10)
    if ((i=i+1) % 2 == 0)
        System.out.println(i);
Run Code Online (Sandbox Code Playgroud)

系统输出:2 4 6 8 10

为什么两个输出不同但公式相同?

java if-statement

5
推荐指数
1
解决办法
1万
查看次数