我在理解线段树复杂性方面遇到问题。很明显,如果你有一个只需要更改一个节点的更新函数,那么它的复杂度将为 log(n)。但我不知道为什么查询(a,b)的复杂性是log(n),其中(a,b)是需要检查的区间。谁能为我提供直观/正式的证据来理解这一点?
我是面向对象编程的新手,这可能是一个愚蠢的问题,但是如果你想创建一个对象的副本,我不明白为什么使用A类代码比使用B类更好.
class A {
int num;
public:
A(const A &ref) : num(ref.num) {};
};
class B {
int num;
public:
B(B *ptToClass) : num(ptToClass->num) {};
};
Run Code Online (Sandbox Code Playgroud)
如果我做对了,复制构造函数用在A类中.