use*_*150 15 c++ sorting vector qsort
我正在尝试学习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;
}
Run Code Online (Sandbox Code Playgroud)
Iva*_*van 22
首先,不要.
如果你只是想搞砸,可以用实际指针替换迭代器:
qsort(&numbers[0], numbers.size(), sizeof(int), compvar);
Run Code Online (Sandbox Code Playgroud)
除了没有完成所有的工作外std::sort,还有一个意想不到的事情qsort.它比较慢.
sort (myvector1.begin(), myvector1.end());
sort (myvector2.begin(), myvector2.end(), myfunction);
sort (myvector3.begin(), myvector3.end(), myobject);
qsort(&myvector4[0], myvector4.size(), sizeof(int), cmyfunction);
4是最慢的,接着是2(传递给函数指针std::sort).1和3(默认和仿函数)是最快的(使用带有-O3标志的gnu的g ++编译).