C++ CPP中struct类型指针的向量数组

C++ CPP中struct类型指针的向量数组,c++,vector,C++,Vector,我有一个结构: struct node{ int data; int rank; node* ptr; }; 之后,我定义了一个类,如下所示:结构在类之外 class A{ private: vector<node*> update(int searchKey); ....some more functions... const int maxLevel; }; 运行代码时会出现以下错误: /usr/include/c++

我有一个结构:

struct node{

int data;
int rank;
node* ptr;
};
之后,我定义了一个类,如下所示:结构在类之外

class A{

     private:
     vector<node*> update(int searchKey);

     ....some more functions...

     const int maxLevel;
     };
运行代码时会出现以下错误:

/usr/include/c++/5/bits/stl_vector.h:1252:22:错误:从“int”到“std::vector::value_type{aka node*}”的转换无效[-fppermissive] _M_fill_initialize(静态_cast(u n),u值)

我尝试了很多改变,但总是出错。我做错了什么?如果我在问题中遗漏了一些细节,请告诉我。谢谢使用

vector<node*> result(maxLevel, nullptr);
矢量结果(maxLevel,nullptr);
而是解决这个错误。自从C++11以来,我们不再使用0或NULL作为空指针

通常,最好不要使用空指针初始化整个向量,然后覆盖它们,而是先保留空间,然后再推送最终值

result.reserve(maxLevel);
...
for (auto i = 0; i < maxLevel; ++i)
  result.push_back(/* pointer to new node */)
result.reserve(maxLevel);
...
用于(自动i=0;i
向量结果(maxLevel,0);//0表示此处为空PTR

您正在尝试使用maxlevel和0实例化向量。 maxlevel似乎是一种整数。 std::vector中没有与此调用匹配的构造函数。
这就是错误的原因。

。你需要一个更好的。@StoryTeller我可以用叮当声来重新解释;-)由于错误说明是因为-fPimple标记,您的联机编译器没有注意到,相同代码在代码块IDE中运行良好,但是当我尝试通过C++运行控制台时,它会引发这个错误。代码块使用什么编译器?这不是g++吗?@Stacker-为了进一步说明这一点,这里是在线的。毫无困难地接受它。是的,这解决了问题。但是为什么错误会指向从int到???@skii的无效转换呢?因为你的例子并没有说明什么。这是你应该问的问题的正确答案。这是BS!with
T=node*
是有效的构造函数。
maxLevel
可转换为
size\u类型
0
转换为
const node*&
vector<node*> result(maxLevel, nullptr);
result.reserve(maxLevel);
...
for (auto i = 0; i < maxLevel; ++i)
  result.push_back(/* pointer to new node */)