gpt4 book ai didi

c++ - 指针的按字母顺序排列(排序) vector

转载 作者:行者123 更新时间:2023-11-30 00:40:24 28 4
gpt4 key购买 nike

我有一个指向一组 Critic 对象的指针 vector 。每个 Critic 都有 UserID、First Name、Last Name 等属性。

我模拟了一个修改后的快速排序,以便根据每个评论家的名字对指针 vector 进行排序。该函数按预期工作,但仅适用于 vector 中的前几个实例。

void quickSortCritics(vector<Critic*> & v, int from, int to)
{
if (from < to)
{
int middle = partition(v, from, to);
quickSortCritics(v, from, middle - 1);
quickSortCritics(v, middle + 1, from);
}
}

int partition(vector<Critic*> & v, int from, int to)
{
char pivot = (v[from]->getFirstName())[0];
int left_index = from - 1;
int right_index = to + 1;

do
{
do
{
right_index--;
} while ( (v[right_index]->getFirstName())[0] > pivot);
do
{
left_index++;
} while ( (v[left_index]->getFirstName())[0] < pivot);

if (left_index < right_index)
{
cout << "swapping " << v[left_index]->getFirstName() << " with " << v[right_index]->getFirstName() << endl;
swap(v[left_index], v[right_index]);
}
} while ( left_index < right_index );

return right_index;
}

有什么建议吗?

最佳答案

如果这不是家庭作业,那你为什么不使用 std::sort 提供比较器作为第三个参数?

bool compare_func(const Critic* c1,const Critic* c2) { /***implement it***/ }

vector<Critic*> v;
//...

std::sort(v.begin(), v.end(), compare_func);

关于c++ - 指针的按字母顺序排列(排序) vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6131247/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com