c++ - 运行时 vector <int> STATUS_ACCESS_VIOLATION

标签 c++ vector qsort

我有一个 vector ,它具有二叉树的中序遍历。现在我使用 qsort 对其进行排序。之后,当我尝试打印 vector 的内容时,运行时出现以下错误。

[main] C:\General_algorithms\binaryTreeToBST.exe 1000 (0) handle_exceptions
: Exception: STATUS_ACCESS_VIOLATION
[main] binaryTreeToBST 1000 (0) handle_exceptions: Dumping stack trace to binary
TreeToBST.exe.core

代码如下:

struct BinTreeNode
{
    int id;
    BinTreeNode *left;
    BinTreeNode *right;

    BinTreeNode(int a)
    {
        id=a;
        left=right=NULL;
    }
};

int compare (const void *a, const void *b)
{
    return ( *(int*)a - *(int*)b );
}

int main()
{
    BinTreeNode n10(10);
    BinTreeNode n2(2);
    BinTreeNode n7(7);
    BinTreeNode n8(8);
    BinTreeNode n4(4);
    n10.left=&n2;
    n10.right=&n7;
    n2.left= &n8;
    n2.right= &n4;

    cout<<"OK TILL HERE1"<<endl;
    vector<int> InTr= inorder(n10); //returns a vector containing the inorder traversal of the tree.
    cout<<"OK TILL HERE2"<<endl;

    if(InTr.size()!=0)
    qsort(&InTr, InTr.size(), InTr[0], compare);
    cout<<"OK TILL HERE3"<<endl; //THIS GETS PRINTED

    cout<<InTr[0];  //THIS DOESN'T GET PRINTED(Error occurs)
    for(int i=0;i<InTr.size();i++)
        cout<<InTr[i]<<endl;
         cout<<"OK TILL HERE4"<<endl; //THIS DOESN'T GET PRINTED
    return 0;
}

最佳答案

您不想这样做,但我想这可能会解决问题

qsort(&InTr[0], InTr.size(), sizeof(int), 比较);

而是使用算法的 sort 。 qsort 速度较慢

关于c++ - 运行时 vector <int> STATUS_ACCESS_VIOLATION,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17895215/

相关文章:

c++ - 我可以在 boost 侵入列表中使用双端队列项目吗

两个 vector<string> 的 C++ For 循环及其到​​字符串的位置

c - 在c中,如果我有 char *const* 指针,我如何访问每个元素?

c - 为什么按降序排列的 qsort int 数组不正确?

C++ 有没有办法以同样的效率组合这个列表和映射?

c++ - 在 Linux 中读取 txt 中的参数

c++ - 交换模板类型列表中的两个元素。寻求最有效的算法

python - 为什么 x[ :, 0] = x[0] 不能用于单个行向量?

java - 函数参数中的模板

c - 我的 `qsort` 程序没有按预期工作