复制向量中的二叉树 我试图在C++向量中复制一个二叉树,我有一个错误,我找不到它是在哪里生成的。此文件位于头文件(.h)中
我在.cpp文件中使用了以下方法:复制向量中的二叉树 我试图在C++向量中复制一个二叉树,我有一个错误,我找不到它是在哪里生成的。此文件位于头文件(.h)中,c++,vector,binary-tree,C++,Vector,Binary Tree,我在.cpp文件中使用了以下方法: void ASCVektor(vector<int> v) { int i, j; for (i = 0; i < v.size() - 1; i++) { for (j = i + 1; j < v.size(); j++) { if (v[i] > v[j]) { int tmp = v[i]; v[i] = v[j];
void ASCVektor(vector<int> v)
{
int i, j;
for (i = 0; i < v.size() - 1; i++)
{
for (j = i + 1; j < v.size(); j++)
{
if (v[i] > v[j])
{
int tmp = v[i];
v[i] = v[j];
v[j] = tmp;
}
}
}
}
void printVektor(vector<int> v)
{
int i;
for (i = 0; i < v.size(); i++)
{
cout << v[i] << ", ";
}
cout << endl;
}
void copyTreeinVector(NyjePeme *T, vector<int> v)
{
if (T != NULL)
{
copyTreeinVector(T->left, v);
v.push_back(T->Key);
copyTreeinVector(T->right, v);
return;
}
return;
}
NyjePeme *PemeKerkimi::TheKSmallestElement(int k)
{
vector<int> v;
coptyTreeinVector(root, v);
ASCVektor(v);
...
void asvektor(向量v)
{
int i,j;
对于(i=0;iv[j])
{
int tmp=v[i];
v[i]=v[j];
v[j]=tmp;
}
}
}
}
无效打印向量(向量v)
{
int i;
对于(i=0;i
copyTreeinVector()函数中存在问题,错误消息如下:
进程返回-1073741819(0xC0000005),抛出该消息需要一段时间。我搜索了该错误,它是由于指针使用不当而生成的……但我在我的代码中找不到问题,您应该通过引用在
CopyTreeInvestor
函数中传递向量
而不是写作
void copyTreeinVector(NyjePeme *T, vector<int> v)
void copyTreeinVector(NyjePeme*T,向量v)
你应该写信的
void copyTreeinVector(NyjePeme *T, const vector<int>& v)
void copyTreeinVector(NyjePeme*T、const vector&v)
下面是一些与该问题相关的附加链接
PemeKerkimi=BinaryTree NyjePeme=Node刚刚忘记翻译:)请将此作为一个。不可能按照发布的方式回答您的问题。您正在通过值将向量传递给函数。这意味着您尝试将数据复制到的主向量与函数中存在的向量不同。通过引用传递CE代替:<代码> STD::向量和V<代码>。谢谢SOO。这是有效的。@ KLujyMata注意到C++是一种基于值的语言,而不是基于引用的语言。如果你熟悉通过引用自动传递对象的语言(java,C++等),那么这就是你为C++做了错误的原因。
void copyTreeinVector(NyjePeme *T, const vector<int>& v)