gpt4 book ai didi

c++ - 尝试将 qsort 与 vector 一起使用

转载 作者:IT老高 更新时间:2023-10-28 22:36:29 25 4
gpt4 key购买 nike

我正在尝试学习 c++,并尝试使用 sort 和 qsort。 sort() 工作得很好但是 qsort 没有,我不知道为什么,所以请你帮帮我这是我试图编译的代码

#include<iostream>
#include<vector>
#include<cstdlib>
#include<ctime>
#include<algorithm>


using namespace std;

int compvar(const void *one, const void *two)
{
int a = *((int*)one);
int b = *((int*)two);
if (a<b)
return -1;
if (a == b)
return 0;
return 1;

}

void bvect(vector<int> &vec, int num)
{
srand(time(NULL));
for(int i=0; i<num; ++i)
vec.push_back(rand()%1000 + 1);
}

void showvec(vector<int> vec)
{
for (int i=0; i<vec.size(); ++i)
cout<<vec[i]<<endl;
}


int main()
{
vector<int>numbers;
bvect(numbers, 1000);
showvec(numbers);
qsort(numbers.begin(), numbers.size(), sizeof(int), compvar);
showvec(numbers);

return 0;
}

最佳答案

首先,不要。

如果你只是想搞砸,你可以用实际的指针替换迭代器:

qsort(&numbers[0], numbers.size(), sizeof(int), compvar);

除了没有完成 std::sort 所做的所有工作之外,qsort 还有一件意想不到的事情。它更慢

  1. 排序(myvector1.begin(), myvector1.end());

  2. 排序(myvector2.begin(), myvector2.end(), myfunction);

  3. 排序(myvector3.begin(), myvector3.end(), myobject);

  4. qsort(&myvector4[0], myvector4.size(), sizeof(int), cmyfunction);

4 是最慢的,其次是 2(传递给 std::sort 的函数指针)。 1 和 3(默认和仿函数)是最快的(使用带有 -O3 标志的 gnu 的 g++ 编译)。

关于c++ - 尝试将 qsort 与 vector 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12308243/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com