private in the scope of the return value of a function definition/implementation 是什么意思(c++)?
What does private in the scope of the return value of a function definition/implementation mean (c++)?
所以我正在查看一些我发现的与我正在为学校工作的项目相关的代码,我发现一个函数实现在 return 值之前具有 private,我希望有人可以向我解释它的目的和用途。我无法在网上找到任何关于它的信息,可能是因为我不完全确定如何提出问题而不被重定向到 class 定义或基本函数定义中有关 private 的信息。
private Node insert(Node h, Key key, Value val)
{
if(h == null)
return new Node(key, val, RED);
if(isRed(h.left) && isRed(h.right))
colorFlip(h);
int cmp = key.compateTo(h.key);
if(cmp == 0) h.val = val;
else if(cmp < 0)
h.left = insert(h.left, key, val);
else
h.right = insert(h.right, key, val);
if(isRed(h.right))
h = rotateLeft(h);
if(isRed(h.left) && isRed(h.left.left))
h = rotateRight(h);
return h;
}
这是关于左倾红黑树的。
提前致谢。
我刚刚用谷歌搜索了您的代码,并在 https://www.cs.princeton.edu/~rs/talks/LLRB/LLRB.pdf 第 5 页
中找到了它
这是 java,代码是 class 实现的一部分。所以private只是将这个方法声明为private,也就是说这个方法只能在class.
中调用
见What is the difference between public, protected, package-private and private in Java?
我不确定您的文档是什么样子,但该文档明确指出 Java 中提供了实现。
private class Node
{
private Key key;
private Value val;
private Node left, right;
private boolean color;
Node(Key key, Value val)
{
this.key = key;
this.val = val;
this.color = RED;
}
}
public Value search(Key key)
{
Node x = root;
while (x != null)
{
int cmp = key.compareTo(x.key);
if (cmp == 0) return x.val;
else if (cmp < 0) x = x.left;
else if (cmp > 0) x = x.right;
}
return null;
}
public void insert(Key key, Value value)
{
root = insert(root, key, value);
root.color = BLACK;
}
private Node insert(Node h, Key key, Value value)
{
if (h == null) return new Node(key, value);
if (isRed(h.left) && isRed(h.right)) colorFlip(h);
int cmp = key.compareTo(h.key);
if (cmp == 0) h.val = value;
else if (cmp < 0) h.left = insert(h.left, key, value);
else h.right = insert(h.right, key, value);
if (isRed(h.right) && !isRed(h.left)) h = rotateLeft(h);
if (isRed(h.left) && isRed(h.left.left)) h = rotateRight(h);
return h;
}
}
所以我正在查看一些我发现的与我正在为学校工作的项目相关的代码,我发现一个函数实现在 return 值之前具有 private,我希望有人可以向我解释它的目的和用途。我无法在网上找到任何关于它的信息,可能是因为我不完全确定如何提出问题而不被重定向到 class 定义或基本函数定义中有关 private 的信息。
private Node insert(Node h, Key key, Value val)
{
if(h == null)
return new Node(key, val, RED);
if(isRed(h.left) && isRed(h.right))
colorFlip(h);
int cmp = key.compateTo(h.key);
if(cmp == 0) h.val = val;
else if(cmp < 0)
h.left = insert(h.left, key, val);
else
h.right = insert(h.right, key, val);
if(isRed(h.right))
h = rotateLeft(h);
if(isRed(h.left) && isRed(h.left.left))
h = rotateRight(h);
return h;
}
这是关于左倾红黑树的。 提前致谢。
我刚刚用谷歌搜索了您的代码,并在 https://www.cs.princeton.edu/~rs/talks/LLRB/LLRB.pdf 第 5 页
中找到了它这是 java,代码是 class 实现的一部分。所以private只是将这个方法声明为private,也就是说这个方法只能在class.
中调用见What is the difference between public, protected, package-private and private in Java?
我不确定您的文档是什么样子,但该文档明确指出 Java 中提供了实现。
private class Node
{
private Key key;
private Value val;
private Node left, right;
private boolean color;
Node(Key key, Value val)
{
this.key = key;
this.val = val;
this.color = RED;
}
}
public Value search(Key key)
{
Node x = root;
while (x != null)
{
int cmp = key.compareTo(x.key);
if (cmp == 0) return x.val;
else if (cmp < 0) x = x.left;
else if (cmp > 0) x = x.right;
}
return null;
}
public void insert(Key key, Value value)
{
root = insert(root, key, value);
root.color = BLACK;
}
private Node insert(Node h, Key key, Value value)
{
if (h == null) return new Node(key, value);
if (isRed(h.left) && isRed(h.right)) colorFlip(h);
int cmp = key.compareTo(h.key);
if (cmp == 0) h.val = value;
else if (cmp < 0) h.left = insert(h.left, key, value);
else h.right = insert(h.right, key, value);
if (isRed(h.right) && !isRed(h.left)) h = rotateLeft(h);
if (isRed(h.left) && isRed(h.left.left)) h = rotateRight(h);
return h;
}
}