小编Ale*_*drH的帖子

以下用于改组数组的算法之间有什么区别吗?

我的 Java 教科书说你可以使用下面的代码随机打乱任何给定的数组:

for(int i = myList.length-1; i >=0; i--)
{

    int j = (int)( Math.random() * (i+1) );
    double temp = myList[i];
    myList[i] = myList[j];
    myList[j] = temp;

}
Run Code Online (Sandbox Code Playgroud)


我编写的以下代码是否同样有效或有效?

for(int i = 0; i < myList.length; i++)
{

    int j = (int)( Math.random() * (myList.length) );
    double temp = myList[i];
    myList[i] = myList[j];
    myList[j] = temp;

}
Run Code Online (Sandbox Code Playgroud)

我测试了我的代码,它确实正确地调整了元素。有没有理由在这个算法上使用教科书的算法?

java algorithm shuffle

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

为什么这两个整数变量和两个双变量(貌似)在内存中共享相同的地址?

我写了一个简单的程序,它有一个打印变量地址的方法和存储在该地址中的内容,只是为了帮助我更好地理解指针:

#include <iostream>
using std::cout;
using std::endl;


template<typename Type>
void PrintAddressAndContentsOf(Type Variable);


/* Entry point */
int main()
{
    int IntegerVariable1 = 5;
    int IntegerVariable2 = 6;

    double FloatingVariable1 = 10;
    double FloatingVariable2 = 11;

    PrintAddressAndContentsOf(IntegerVariable1);
    PrintAddressAndContentsOf(IntegerVariable2);
    PrintAddressAndContentsOf(FloatingVariable1);
    PrintAddressAndContentsOf(FloatingVariable2);
}


/* Prints the address and the corresponding contents of a given variable */
template<typename Type>
void PrintAddressAndContentsOf(Type Variable)
{
    Type* Pointer = &Variable;

    cout << "Address: " << Pointer << endl;
    cout << "Contents: " << *Pointer << endl;
} …
Run Code Online (Sandbox Code Playgroud)

c++ memory pointers

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

如何在 Jest 中模拟 IntersectionObserver API?

我已经阅读了有关该主题的所有相关问题,并且我意识到这可能会被标记为重复,但我根本无法弄清楚如何使其发挥作用。

我有这个简单的函数来延迟加载元素:

export default function lazyLoad(targets, onIntersection) {
  const observer = new IntersectionObserver((entries, self) => {
    entries.forEach((entry) => {
      if (entry.isIntersecting) {
        onIntersection(entry.target);
        self.unobserve(entry.target);
      }
    });
  });

  document.querySelectorAll(targets).forEach((target) => observer.observe(target));
  return observer;
}
Run Code Online (Sandbox Code Playgroud)

用法示例:

lazyLoad('.lazy-img', (img) => {
  const pictureElement = img.parentElement;
  const source = pictureElement.querySelector('.lazy-source');

  source.srcset = source.getAttribute('data-srcset');
  img.src = img.getAttribute('data-src');
});
Run Code Online (Sandbox Code Playgroud)

现在,我尝试lazyLoad使用 jest 测试该函数,但我显然需要模拟 IntersectionObserver,因为它是一个浏览器 API,而不是本机 JavaScript API。

测试该方法的工作如下observe

let observe;
let unobserve;

beforeEach(() => {
  observe = jest.fn();
  unobserve = jest.fn();

  window.IntersectionObserver = …
Run Code Online (Sandbox Code Playgroud)

javascript unit-testing jestjs

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

标签 统计

algorithm ×1

c++ ×1

java ×1

javascript ×1

jestjs ×1

memory ×1

pointers ×1

shuffle ×1

unit-testing ×1