使用用户定义的动态容器对元素进行排序
Sorting elements with user defined dynamic containers
我在C++上对元素进行排序时遇到了一些问题。不幸的是,我不能使用C++容器(教授的要求),所以我创建了一个名为"vettore"的新容器,其结构在概念上类似于列表。所以我试图对包含在"vettore"结构中的整数进行排序,但使用以下代码,作为输入 100、10、1,我收到 1、100、100。我真的不明白为什么它不起作用。这是类"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"类(用于需要):
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);
- 当然,当您不允许使用标准容器时是否允许这样做当然是另一回事。
相关文章:
- 查找两个排序向量中共有的元素
- C++ 如何比较n个排序的整数向量以找到互元素?
- 如何在 c++ 中根据第二个元素按降序对列表进行排序
- 对的排序向量 (std::vector<pair<int, int>>) 按对的第一个元素搜索并更新第二个元素值
- 高级选择排序 - 在一次迭代中搜索两个元素
- 为什么用户定义的函数不按照给定的顺序对相同长度的元素进行排序?
- 为什么这个选择排序算法仍然切换一个元素,当它已经是其他元素中最小的元素时?
- 快速排序 - 三个中位数枢轴选择 - 某些元素顺序不正确
- 将一系列已排序的元素划分为相邻组
- 如何通过保持第一个插入的位置来对列表中插入的其余元素进行排序?
- 保持排序的数据结构,允许log N插入时间,并且可以返回我在log N中查找的元素的索引
- "x"的所有元素都存在于"y"(排序向量)中吗?
- 如何根据对的第二个元素对 STL c++ 中的一组对进行排序?
- 如何在保持它们连接到同一元素的同时对 2 个数组进行排序?
- 使用 pair 创建priority_queue,以便在第一个元素相等时"<"第一个元素的排序,对第二个元素">"排序
- 如何将元素排序到矩阵C++
- 如何保持按第二个元素排序的对的优先级队列?
- 如何从两个数组中生成一对向量,然后使用CUDA/Thrust按对的第一个元素排序
- 部分排序数组,最后n个元素排序
- 如何对一对向量按降序排序,并按第二个元素排序