【发布时间】:2015-02-23 02:37:03
【问题描述】:
我有一个字符串数组
string relationarray[10000][2];
取自#include<string>。数组的relationarray[index][0] 处的每个字符串在其开头都有一个4 位数字,我试图用它来对数组进行排序。数组通常未满。
来自#include<algorithm>我正在尝试使用
std::sort(relationarray,relationarray + (sizeof(relationarray)/sizeof(relationarray[0])) 让一切井井有条。
但是 sort 将字符串放在数组的末尾以支持空位置。我究竟做错了什么?我尝试为 sort 的第三个参数创建比较函数,但它没有编译。
bool waytosort(string one, string two){
if (two.empty()){
return false;
}
int first =stoi(one.substr(0,3));
int second=stoi(two.substr(0,3));
return first<second;
}
【问题讨论】:
-
我不认为你可以像那样对二维数组进行排序。另外,为什么不使用具有动态大小的向量而不是硬编码的 20000 个字符串数组呢?如果您不使用所有字符串,那么这会占用大量内存(可能是数百 mb)并浪费搜索时间。
-
我不允许使用向量或来自 STL 的任何东西,这是一个作业。
-
@abd 如果不允许您使用 STL 中的任何内容,那么您为什么要调用
std::sort?那是一个STL算法函数。 -
如果您真的想以更 C++ 的方式执行此任务,您可以使用
std::map<string, string>或std::map<int, string>,并且不需要编写任何代码。跨度> -
@abd
I've heard that qsort isn't part of the STL but I don't know how to use it.你不应该使用它。qsort对 C++ 类或非 POD 类型一无所知。因此,无法保证当qsort开始交换您的数据时,它不会将其破坏到无法修复的地步。在此处阅读注释部分:en.cppreference.com/w/cpp/algorithm/qsort