相关疑难解决方法(0)

循环中i ++和++ i之间的区别?

是否有差异++i,并i++在一个for循环?它只是一个语法的东西吗?

language-agnostic for-loop pre-increment post-increment

294
推荐指数
10
解决办法
28万
查看次数

C#中的++ i和i ++之间是否存在任何性能差异?

使用类似的东西是否有任何性能差异

for(int i = 0; i < 10; i++) { ... }
Run Code Online (Sandbox Code Playgroud)

for(int i = 0; i < 10; ++i) { ... }
Run Code Online (Sandbox Code Playgroud)

或者编译器是否能够以这样的方式进行优化,使它们在功能相同的情况下同样快速?

编辑:这是因为我与同事讨论过这个问题,并不是因为我觉得它在任何实际意义上都是有用的优化.它主要是学术性的.

c# performance operators

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

在javascript中查找字符串中第n个字符的出现次数

我正在编写一个javascript代码来查找字符串中第n个字符的出现位置.使用该indexOf()函数,我们可以获得第一次出现的角色.现在的挑战是获得角色的第n次出现.我能够使用下面给出的代码获得第二次出现等等:

function myFunction() {
  var str = "abcdefabcddesadfasddsfsd.";

  var n = str.indexOf("d");
  document.write("First occurence " +n );

  var n1 = str.indexOf("d",parseInt(n+1));
  document.write("Second occurence " +n1 );

  var n2 = str.indexOf("d",parseInt(n1+1));
  document.write("Third occurence " +n2 );

  var n3 = str.indexOf("d",parseInt(n2+1));
  document.write("Fourth occurence " +n3);

  // and so on ...
}
Run Code Online (Sandbox Code Playgroud)

结果如下

First occurence 3 
Second occurence 9 
Third occurence 10 
Fourth occurence 14 
Fifth occurence 18 
Sixth occurence 19
Run Code Online (Sandbox Code Playgroud)

我想概括脚本,以便我能够找到第n次出现的字符,因为上面的代码要求我们重复脚本n次.让我知道是否有更好的方法或替代方法来做同样的事情.如果我们只是给出事件(在运行时)来获取该字符的索引,那将是很好的.

以下是我的一些问题:

  • 我们如何在JavaScript中完成它?
  • 是否有任何框架提供任何功能以更简单的方式执行相同的实现,或者在其他框架/语言中实现相同的替代方法是什么?

javascript

22
推荐指数
3
解决办法
3万
查看次数

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

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


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

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

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

c++ java performance pre-increment post-increment

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

post和pre-increment运算符的以下哪种组合在C中具有未定义的行为?

我读过,有没有人可以解释这些未定义的行为(i = i ++ + ++ i,i = i ++等...)并在浪费超过2小时后尝试理解 "comp.lang.c FAQ"中的序列点时间试图通过gcc编译器解释以下结果.

expression(i=1;j=2)     i       j       k
k = i++ + j++;          2       3       3
k = i++ + ++j;          2       3       4
k = ++i + j++;          2       3       4
k = ++i + ++j;          2       3       5

k = i++ + i++;          3               2
k = i++ + ++i;          3               4
k = ++i + i++;          3               4
k = ++i + ++i;          3               6 …
Run Code Online (Sandbox Code Playgroud)

c expression operators undefined-behavior

4
推荐指数
3
解决办法
1816
查看次数

指向连续2D数组的指针

我正在使用带有标志的gcc版本4.8.0 -Wall -std=gnu99.

我需要在C中使用malloc为连续的2D数组动态分配内存; 这个事实是不可谈判的.但是,为了便于使用,我仍然希望能够使用方便的x[r][c]表示法访问该阵列.这是我的勇敢尝试,创建指向连续的2D数组的指针,并通过执行*array[r][c]以下操作索引数组:

#include <stdlib.h>
#include <stdio.h>

int main(void)
{
    size_t rows = 3, cols = 5;

    printf("sizeof(int) = %li\n\n", sizeof(int));

    int (*array)[rows][cols] = malloc(sizeof(int) * rows * cols);
    printf("array starts at %p\n", array);
    printf("sizeof(array) = %li\n", sizeof(array));
    printf("sizeof(array[0][0]) = 0x%lx\n", sizeof(array[0][0]));
    puts("");

    unsigned short r, c;

    for (r = 0; r <= rows - 1; r++) {
        for (c = 0; c <= cols - 1; c++) {
            printf("array[%i][%i] is at %p\n", …
Run Code Online (Sandbox Code Playgroud)

c pointers multidimensional-array

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

如何有效旋转数组?

给定n整数和数字d数组,对数组执行左旋转。然后将更新后的数组打印为单行以空格分隔的整数。

输入样例:

5 4
1 2 3 4 5

第一行包含两个以空格分隔的整数,分别表示n(整数数)和d(必须执行的左旋转数)的值。第二行包含用n空格分隔的整数,这些整数描述了数组初始状态的各个元素。

样本输出:

5 1 2 3 4

static void Main(String[] args)
{
    string[] arr_temp = Console.ReadLine().Split(' ');
    int n = Int32.Parse(arr_temp[0]);
    int d = Int32.Parse(arr_temp[1]);

    string[] arr = Console.ReadLine().Split(' ');
    string[] ans = new string[n];

    for (int i = 0; i < n; ++i)
    {
        ans[(i + n - d) % n] = arr[i];
    }

    for (int j = 0; j …
Run Code Online (Sandbox Code Playgroud)

c# algorithm

1
推荐指数
4
解决办法
9982
查看次数

'printf'中的后期/预增量

可能的重复:
在一个语句中输出多个post和pre
增量在'for'循环中的后增量和预增量

以下代码段

int i=0;
printf("%d %d",i++,i++);
Run Code Online (Sandbox Code Playgroud)

给出输出

1 0

我可以理解,但以下

int i=0;
printf("%d %d",++i,++i);
Run Code Online (Sandbox Code Playgroud)

给出输出

2 2

有人能解释我第二种行为吗?

c c++ operator-precedence

0
推荐指数
1
解决办法
4727
查看次数

使用C++读取和打印文本文件时出错

我的代码有错误(问题末尾的代码).我的C++可执行文件的目的是读取包含数字的文件,将其复制到std :: vector中,然后只打印stdout中的内容?问题出在哪儿?(ATOI?)

我有一个简单的文本文件,其中包含以下数字(每行有一个数字)

mini01:algorithms ios$ cat numbers.txt 
1
2
3
4
5
Run Code Online (Sandbox Code Playgroud)

当我执行程序时,我再收到一行:

mini01:algorithms ios$ ./a.out 
1
2
3
4
5
0
Run Code Online (Sandbox Code Playgroud)

为什么我在标准输出中获得第6行?

#include <iostream>
#include <string>
#include <fstream>
#include <vector>
using namespace std;

void algorithm(std::vector<int>& v) {

    for(int i=0; i < v.size(); i++) {
        cout << v[i] << endl;
    }

}

int main(int argc, char **argv) {

    string line;
    std::vector<int> vector1;
    ifstream myfile("numbers.txt");
    if ( myfile.is_open()) {
        while( myfile.good() )
        {
            getline(myfile, line);
            vector1.push_back(atoi(line.c_str()));
        }
        myfile.close();
    }
    else …
Run Code Online (Sandbox Code Playgroud)

c++

0
推荐指数
1
解决办法
1223
查看次数

这两个FOR循环之间有什么区别?

我正在学习C并在本书中看到了下面列出的第一个循环.我很好奇两者之间的差异,因为我习惯使用第二个,并且无法找出差异,即使它们返回不同的结果.

for(i = 0; i < 10; ++i){}

for(i = 0; i <= 10; i++){}
Run Code Online (Sandbox Code Playgroud)

c

-1
推荐指数
1
解决办法
149
查看次数

java中的++和++ a或a - 和--a有什么区别?

 public void push(E element) {
    if (size == elements.length) {
        resize(); // doubel of size
    }
    elements[size++] = element;
}


public E pop() {
    if (size == 0) {
        throw new java.util.EmptyStackException();
    }
    E element = elements[--size];
    elements[size] = null; // set null in last top
    return element;
}
Run Code Online (Sandbox Code Playgroud)

java中的++和++ a或a - 和--a之间有什么区别?

谢谢

java

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

--i和i--有什么区别?

在一些代码中,我看到了一个带有--i作为第三个参数的for循环

for(int i=array.length; i<0; --i)
Run Code Online (Sandbox Code Playgroud)

也许有人可以解释我与我的区别 - ?

我想这就像我减少的那一刻?

java

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