В приведенном ниже коде strArray представляет собой массив строк, а vec содержит соответствующий идентификатор каждой строки. Я хочу сортировать идентификаторы в vec на основе строк в strArray.Как написать функцию Comp в sort() из C++ STL
Как я могу спроектировать функцию 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', вы уже явно видели документы. Функция сортировки работает с элементами в контейнере. Функция сравнения принимает две переменные - это не подходит для того, что вы пытаетесь сделать. Как насчет того, чтобы вы сохраняли вектор структур? Каждая структура может содержать строку и целое число. Затем функция сравнения просто сравнивает целочисленный элемент структуры. – enhzflep
Hi enhzflep, я думаю, вы правы, спасибо! – Tao