在 C++ 标准库中,std::vector 是一个模板类,提供了多种构造函数,允许以不同的方式来创建和初始化向量。对于 std::vector<T>,这里有几种常用的构造函数:
-
Default constructor: 创建一个空的
vector。std::vector<T> v; -
Fill constructor: 创建一个包含
n个复制自值val的元素的vector。std::vector<T> v(n, val); -
Range constructor: 根据迭代器范围
[first, last)创建一个vector。std::vector<T> v(first, last); -
Copy constructor: 创建一个新的
vector,作为现有vector的副本。std::vector<T> new_v(old_v); -
Move constructor: 通过移动现有
vector(other)的内容来创建一个vector,而不是复制它们。std::vector<T> v(std::move(other)); -
Initializer list constructor: 用初始化列表创建
vector。std::vector<T> v = {a, b, c, d};
在你的 get_prev_lt 函数中,使用了填充构造函数来创建一个特定大小(MAXLVL)的 vector,所有元素都被初始化为 nullptr:
std::vector<SkiplistNode*> prev_nodes(MAXLVL, nullptr);
在这个例子中,T 是 SkiplistNode* 类型,n 是 MAXLVL,val 是 nullptr。这意味着创建了一个大小为 MAXLVL 的 vector,所有的元素都初始化为指向 nullptr 的指针。