使用用户定义的动态容器对元素进行排序

Sorting elements with user defined dynamic containers

我在使用 C++ 对元素进行排序时遇到了一些问题。不幸的是,我不能使用 C++ 容器(教授的要求),所以我创建了一个名为 'vettore' 的新容器,其结构在概念上类似于列表。 所以我试图对 'vettore' 结构中包含的整数进行排序,但是使用以下代码,作为输入 100、10、1,我收到 1、100、100。我真的不明白为什么它不是在职的。 这是 class "vettore" 的方法,它应该对元素进行排序:

void ordina(){
    vettore<T>*aux=this;
    vettore<T>*punt_a_min=aux;
    bool sentinella=0;
    T min=aux->get_my();

    while(aux->get_next()!=nullptr){
        aux=aux->get_next();

        if(aux->get_my()<min){
            sentinella=1;  
            min=aux->get_my();
            punt_a_min=aux;
        }
    }

    if(sentinella==1){ 
        punt_a_min->set_obj(this->get_my());              
        this->set_obj(min);
    }

    if(this->get_next()!=nullptr) 
        *(this->get_next()).ordina();                  
};

这是 "vettore" class(需要什么):

template<class T> class vettore{
      private:
              T my_object; //container
              vettore <T> * next; //puntatore al prossimo elemento della lista
      public:
              vettore():next(nullptr){}; //default constructor
              vettore(T oggetto, vettore <T> * successivo=nullptr):next(successivo),my_object(oggetto){}; //faccio puntare la lista a quell'elemento 

              vettore(const vettore <T> &x):next(x.next),my_object(x.my_object){}; //copy constructor

              ~vettore(){//destructor
                  if(next!=nullptr){
                      delete next;
                      next=nullptr;
                  }
              };

              vettore <T> * get_next(){
                  return next;
              };

              T get_my(){
                  return my_object;
              };

              T& get_obj(){ //ottenere l'oggetto by reference
                  return my_object;
              };       

              void ordina(){
                  //vettore<T>*new_this=this;
                  vettore<T>*aux=this;
                  vettore<T>*punt_a_min=aux;
                  bool sentinella=0;
                  T min=aux->get_my();

                  while(aux->get_next()!=nullptr){
                      aux=aux->get_next();

                      if(aux->get_my()<min){
                          sentinella=1;  
                          min=aux->get_my();
                          punt_a_min=aux;
                      }
                  }

                  if(sentinella==1){ 
                      punt_a_min->set_obj(this->get_my());              
                      this->set_obj(min);
                  }

                  if(this->get_next()!=nullptr)
                      *(this->get_next()).ordina();                  
              };

              void set_next(vettore<T>*e){
                  next=e;
              }

              void set_obj(T obj){
                  my_object=obj;
              };
          };

如果这不正确(或者只是出于好奇),是否有声明为 int * a = new int [n] 的动态数组的排序函数? 非常感谢。

应该可以做到 std::sort(a, a + n); - 当然,当不允许使用标准容器时是否允许这样做当然是另一回事。