【发布时间】:2018-01-15 20:51:26
【问题描述】:
那么我该怎么做呢?我尝试使用友元函数,重载运算符,但似乎无法完成。
class shop {
int price;
string name;
string model;
public:
shop () {
price =0;
name = " NULL" ;
model = " NULL " ;
}
shop ( string n , string m , int p ) {
name = n;
model = m;
price = p;
}
void display () {
cout<<"Name : " << name <<endl;
cout<<"Model : "<<model<<endl;
cout<<"Price : "<<price<<endl;
}
};
如何按价格排序?
for ( int i = 1 ; i<=products ; i++) {
cin.ignore();
cout<<"Name "<< i << ": ";
getline(cin,n);
cout<<"Model "<< i << ": ";
cin>>m;
cout<<"Price "<< i << ": ";
cin>>p[i];
e[i] = new shop(n,m,p[i]);
}
我有一个尝试排序的向量。我想不排序,因为我认为我没有为这个方法正确声明向量。
【问题讨论】:
-
您可以使用自定义比较器
std::sort。 -
没有腿怎么走路?如何在没有计算机的情况下运行程序?没有
std::sort如何排序?这些问题没有用。只需使用专为解决您的问题而制作的工具即可。 -
有大量使用数组的排序示例。向量可以使用数组表示法来访问元素。如果您不想使用默认的
std::sort,或带有自定义比较器的std::sort,您可以使用qsort或自己编写。 -
@jodag,manni66 可以根据
for ( int i = 1 ; i<=products ; i++)做出相当不错的猜测。 sebbyz 可能在vector的开头分配了一个额外的空槽,但这更有可能是一个单独的错误。 Sebbyz、向量和数组是原点 0。它们从 0 开始计数,而不是 1。这意味着如果您没有考虑原点零,p[products]可能超出范围。
标签: c++ class sorting object vector