小编use*_*106的帖子

阅读Jon Skeet关于参考与价值观的章节.仍然困惑

我阅读了Skeet的书的第2.3.2节,根据我的理解,C#中没有真正的引用,就像在C++中一样.

值得注意的是,不仅神话中的"引用"位被破坏,而且"对象被传递"位也是如此.对象本身永远不会通过引用或值传递.当涉及引用类型时,要么通过引用传递变量,要么通过值传递参数(引用)的值.

请注意,这与C++不同(我来自C++背景),因为在C++中,您可以使用&符号直接使用参数列表中的对象 - 没有任何副本,甚至不是对象的内存地址的副本:

bool isEven ( int & i ) { return i % 2 == 0 } )

int main ()
{
    int x = 5; 
    std::cout << isEven(x); // is the exact same as if I had written 
                            // std::cout (x % 2 == 0)
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

没有与上述相同的内容.你能用C#获得的最好成绩相当于

bool isEven ( int * i ) { return *i % 2 == 0 } )

int main ()
{
    int x = 5; 
    std::cout …
Run Code Online (Sandbox Code Playgroud)

c# c++ optimization reference

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

这个现代编程面试挑战的解决方案是否不可靠?

所以我没有通过编程面试问题

"鉴于一系列的整数1,2,......,n,其中一个缺失,找到丢失的一个."

面试官说正确答案是将数字相加并从n(n + 1)/ 2中减去总和,即应用公式https://en.wikipedia.org/wiki/1_%2B_2_%2B_3_%2B_4_ %2B_%E2%8B%AF

在此输入图像描述

并说任何计算机科学专业的学生都会这样做.我的解决方案就像

char takenSpots [] = n*malloc(sizeof(char)); 
for (int k = 0; k < n; ++k) takenSpots[arr[k]-1] = 'x';
for (int k = 0; k < n; ++k) if (takenSpots[k] != 'x') return (k+1);
Run Code Online (Sandbox Code Playgroud)

这并不像我承认的总和解决方案那样"酷",我从未想过尝试过.

首先,使用求和方法是否存在溢出的危险?我的意思是,如果arr包含~((int)0)~((int)0) - 1?那么不会arr[0] + arr[1] + ... + arr[n-1]溢出?或者解决方案是否仍然有效,因为1 + 2 + ... + n溢出?

c algorithm optimization integer time-complexity

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

在Javascript中,将数组的最后一个元素引入开头的最紧凑,优雅和高效的方法是什么?

我正在编写一个Snake游戏

在此输入图像描述

蛇的运动的逻辑决定了如果我有一个Javascript数组

var links = [elem_0, elem_1, ..., elem_n];
Run Code Online (Sandbox Code Playgroud)

代表蛇的链接元素,那么对于蛇的移动方式是蹦出来elem_n,改变它的位置是在中elem_0加翻译单元dxdy,然后把它放在数组的开始:

[elem_0, elem_1, ..., elem_n] ---> [elem_n, elem_0, ..., elem_(n-1)]

(具有一些内部属性 elem_n在此过程更改)

这样做的方法是什么,不做任何妥协

  • 在操作数和内存使用数方面效率最高
  • 可读
  • 可维护性
  • 聪明(可选)
  • 优雅
  • 紧凑

????

javascript arrays algorithm optimization game-physics

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

Javascript有办法做"find_if"或"FirstOrDefault"吗?

我是一名初级JavaScript开发人员,我发现我经常遇到需要做的事情

"Find the first element satisfying a condition, then do something with the element" 
Run Code Online (Sandbox Code Playgroud)

我最后for用一个break语句写了一个循环.例如,这是我写的一段生产代码:

// set up event listeners for changing the snake's direction
// based on arrows keys pressed
// see: http://stackoverflow.com/questions/6226859/how-can-i-track-arrow-keys-in-chrome-and-ie
var arrowKeyMap = { 37 : "left", 38: "down", 39: "right", 40: "up" };
$(document).keydown(function (e)
{
    // want to make this more compact ...
    for (var i in arrowKeyMap)
    {
        if (i == e.keyCode)
        {
            SG.snake.changeDirection(arrowKeyMap[i]);  
            break;
        }
    }

});
Run Code Online (Sandbox Code Playgroud)

我想知道是否有本机JavaScript工具,或使用JQuery的方式,使其更紧凑,或者如果我需要手动滚动可重复使用的过程,这样的情况.我知道C#有一个 …

javascript algorithm jquery design-patterns

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