我想对字符串进行排序。最简单的方法是将所有足够的东西放入地图中。为了有效地使用内存,我将后缀传递为 (str+i),其中 str 是 char*,i 是位置后缀开头。但是,我发现 map 不足以对这些进行排序。这是一个例子
typedef std::map < char*, int,Comparator> MapType;
MapType data;
// let's declare some initial values to this map
char* bob=(char* )"Bobs score";
char* marty=(char* ) "Martys score";
data.insert(pair<char*,int>(marty+1,15));
data.insert(pair<char*,int>(bob+1,10));
MapType::iterator end = data.end();
for (MapType::iterator it = data.begin(); it != end; ++it) {
std::cout << "Who(key = first): " << it->first;
std::cout << " Score(value = second): " << it->second << '\n';
}
输出是
Who(key = first): obs 得分 Score(value = second): 10 Who(key = first): artys score(value = second): 15
但是,strcmp
用于比较字符串的标准函数对于 bob+1 和 marty+1 可以正常工作。它说 marty+1 小于 bob+1。