排序不起作用 c++

Sorting doesnt work c++

本文关键字:c++ 不起作用 排序      更新时间:2023-10-16
for (Dodavatel *a : zoznamDodavatelov) {
    for (Dodavatel *b : zoznamDodavatelov) {
        if (a->getNazov() < a->getNazov()) {
            Dodavatel *prem = a;
            a = b;
            b = prem;
        }
    }
}

为什么这不起作用,它无法对我的数组进行排序,称为zoznamDodavatelov

首先,您的容器存储Dodavatel *类型的指针。但是,在循环中,指针ab被声明为独立的局部变量。交换指针ab不会影响数组的内容。

所以,问题是:为了"排序"数组,您应该重新排序什么?指针?还是这些指针指向的对象?

在前一种情况下,为了对指针重新排序,您需要将循环变量声明为引用

for (Dodavatel *&a : zoznamDodavatelov) {
  for (Dodavatel *&b : zoznamDodavatelov) {

后一种情况下,您可以保留当前声明,但是在if内部,您必须交换*a*b,而不是a,并且b

其次,您的if毫无意义,因为它将*a与自身进行比较。

if (a->getNazov((

getNazov((( {

这句话永远不会是真的。