-2

我有一个这样的数组:

名称、状态、房价、汽车价格

约翰,威斯康星州,200、100 吉米,密歇根州,100、90 ...

如何在不更改同一行中的元素的情况下对房价和汽车价格进行排序?就像根据他们的房价和车价对数组中的另一行进行排序一样,将整行“约翰”排序,但将行中的所有内容保持在一起。

这是我到目前为止所拥有的,

for (int i=0;getline(file,(names[i]),',');i++)
{ 
getline(file, states[i], ',');

getline(file, houseprice[i], ',') ;

getline(file, carprice[i]); 
}

我想如何对另一行的房价和车价进行排序,而不会丢失该行的名称和状态。

4

3 回答 3

0

只需将您感兴趣的字段投影为比较函数对象的一部分,否则将对象视为一个单元:

house array[] = { ... };
// sort by houseprice; similar for other attributes:
std::sort(std::begin(array), std::end(array), [](house const& h0, house const& h1) {
              return h0.houseprice < h1.houseprice;
          });
于 2013-10-06T19:40:08.423 回答
0

您需要实现一个将“原始”顺序映射到“排序”顺序的向量,

所以排序算法的结果将是一个映射向量,绘制输出表的函数需要按照映射向量的顺序来绘制它。例如,如果在排序后所有行都停留在第一顺序位置并且只有第 4,5 行交换

映射向量的位置将是:索引:0、1、2、3、4、5、6、7,...数据:0、1、2、3、5、4、6、7,...

因为您的问题很笼统-答案也是如此

于 2013-10-06T19:40:31.113 回答
0

您可以使用结构向量,例如:

struct PersonalInfo
{
  string name;
  string state;
  int housePriceCents;
  int carPriceCents;
}

std::vector<PersonalInfo> infos;

然后将 sort 与传入的比较函数一起使用,或者在您的结构中定义 < 运算符,以便价格较低的结构被认为低于价格较高的结构。

于 2013-10-06T19:44:43.157 回答