liv*_*hak 0 c++ dictionary stdmap std qsort
我指的是一个比较qsort vs stdsort性能的上一个链接.
我写了一个C程序,填充了一个大的std::map,我想对数组进行排序qsort.我正在使用.
typedef std::map<uint16_t, uint32_t> TSrcMap;
TPSrcMap sp;
TSrcMap::iterator its;
/*Code to populate the array_start.*/
/*Code to populate the array_end.*/
typedef struct port_count
{
uint32_t port_number;
uint32_t port_count;
}port_count_t;
port_count_t pcount[10];
memset(pcount,0,sizeof(pcount));
size_t structs_len = sizeof(pcount)/sizeof(port_count_t);
for(its = stcp.begin(); its != stcp.end();its++)
{
if(pcount[smallest_index].port_count < (*its).second)
{
pcount[smallest_index].port_count = (*its).second;
pcount[smallest_index].port_number = (*its).first;
/*qsort(pcount, structs_len, sizeof(port_count_t), struct_cmp_by_port_count);*/
std::sort(pcount,sizeof(port_count_t));
}
}
Run Code Online (Sandbox Code Playgroud)
该qsort函数正确排序数组.我想比较qsortwith 的性能,std::sort但调用std::sort调用给出了编译错误
没有匹配的呼叫功能
‘sort(port_count_t [10], long unsigned int)’
我想比较的性能std::sort与qsort算法.我怎么做?
签名std::sort()是:
template <class RandomAccessIterator, class StrictWeakOrdering>
void sort(RandomAccessIterator first, RandomAccessIterator last,
StrictWeakOrdering comp);
Run Code Online (Sandbox Code Playgroud)
所以它需要两个迭代器和一个比较器,而不是指针和长度.要修复您的代码,请致电
std::sort(pcount, pcount+structs_len, cmp_port_count);
Run Code Online (Sandbox Code Playgroud)
假设这cmp_port_count是你的比较器函数,它port_count_t通过引用获取两个对象,并true在第一个参数在第二个参数之前进行排序时返回,false否则返回.