【发布时间】:2015-06-16 13:41:22
【问题描述】:
在下面的代码中,strArray是一个字符串数组,vec包含了每个字符串对应的ID。 我想根据 strArray 中的字符串对 vec 中的 ID 进行排序。
如何设计排序中的 Comp 函数?
class myClass
{
public:
int V;
vector<int> vec;
string* strArray;
myClass(int v);
void myFunc();
}
myClass::myClass(int v, vector<int> vec1)
{
V = v;
strArray = new string[v];
vec.swap(vec1)
}
void myClass::myFunc()
{
//....
for(i = 0; i<V; i++)
strArray[i] = GenerateString(vec[i]);// GenerateString() can return a string.
sort(vec.begin(), vec.end(), Comp);// sort vec based on strArray,how to design the Comp funtion?
//....
}
main()
{
int myints[] = {32,71,12,45,26,80,53,33};
vector<int> myvector (myints, myints+8);
myClass obj(8, myvector);
obj.myFunc();
return 0;
}
【问题讨论】:
-
这似乎是一个损坏的设计。鉴于您已经从
std::sort页面cplusplus撕下代码,您显然已经看过文档。 sort 函数对容器中的元素进行操作。 compare 函数接受两个变量 - 这不适合你想要做的事情。你保留一个结构向量怎么样?每个结构可以包含一个字符串和一个整数。然后比较函数将简单地比较结构的整数成员。 -
嗨 enhzflep,我认为你是对的,谢谢!