小编Pet*_*teL的帖子

如何在C++ 11 RNG的初始状态的本地和全局设置之间切换?

在下面给出的代码中,我想实现一个标志(或同样简单的东西),它具有与注释本地设置和使用全局设置一些相同的效果(在此示例中产生两个不同的数字),并使用其他时间的本地设置(在此示例中产生两个相同的数字).

我已经尝试了明显的"if"和"switch"结构而没有成功.

#include <iostream>
#include <random> 

void print();

std::seed_seq seed{1, 2, 3, 4, 5}; 
std::mt19937 rng(seed); // *global* initial state
std::uniform_real_distribution<> rand01(0, 1); 

int main()
{
    print();
    print();

    return 0; 
}

void print()
{
    std::mt19937 rng(seed); // *local* initial state
    std::cout << rand01(rng) << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

c++ prng c++11

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

lisp中的循环指针

在完成CLRS Intro to Algorithms一书并试图在常见的lisp中实现红黑二叉搜索树时,我遇到了以下问题:圆形指针:

(defstruct node (ptr nil))

(defparameter *x* (make-node))

(defparameter *y* (make-node :ptr *x*))

(setf (node-ptr *x*) *y*)
Run Code Online (Sandbox Code Playgroud)

此代码导致堆耗尽错误,可能是由于指针指向指向该指针的指针等引起的无限递归.

有没有办法防止这种无限递归发生,同时保持这里给出的指针结构?

我知道还有其他方法可以实现红黑树(例如,不使用setf),但我有兴趣在CLRS中复制命令式样式,因为常见的lisp是一种多范式语言.

PS.除了通常的左子指针和右子指针之外,CLRS中的BST还有指针.

lisp clisp sbcl common-lisp circular-reference

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

标签 统计

c++ ×1

c++11 ×1

circular-reference ×1

clisp ×1

common-lisp ×1

lisp ×1

prng ×1

sbcl ×1