考虑以下列表:
Name Price(per kg) Weight(in kg)
rice1 40 20
rice2 50 27
rice3 35 24
我希望所有大米类型都根据其值(value)进行排序。所以,我对它们进行了排序。
new sorted price: 35 40 50
现在我打印它们并输出如下:
Name Price Weight
rice1 35 20
rice2 40 27
rice3 50 24
但这不是我想要的。我希望它像这样打印:
Name Price Weight
rice3 35 24
rice1 40 20
rice2 50 27
所以,问题是我得到了排序列表中的值,但没有得到名称和权重。我想根据值(value)对所有东西进行排序。 我怎样才能做到这一点?
我编写了以下代码。但不知道下一步该做什么。
#include <iostream>
#include <string>
#include <algorithm>
int main()
{
class treasure
{
public:
std::string name[100];
double value[100];
double weight[100];
};
int itemNumber, totalWeight, i;
treasure item;
std::cout << "Enter total item weight(in kg): " << std::endl;
std::cin >> totalWeight;
std::cout << std::endl <<"Enter total item number: " << std::endl;
std::cin >> itemNumber;
//take item name, item value, item weight
for( i = 0; i < itemNumber; i++)
{
std::cout << std::endl << "Enter item name: " << "\t" << "Enter item value(per kg): " << "\t" << "Enter item weight(in kg): " << std::endl;
std::cin >> item.name[i] >> item.value[i] >> item.weight[i];
}
//sort items according to given value
std::sort(item.value, item.value + itemNumber);
//print sorted list
for( i = 0; i < itemNumber; i++)
{
std::cout << std::endl << std::endl << "Item name: " << "\t" << "Item value(per kg): " << "\t" << "Item weight(in kg): " << std::endl;
std::cout << item.name[i] << "\t\t" << item.value[i] << "\t\t\t" << item.weight[i] << std::endl;
}
return 0;
}
最佳答案
你的结构应该是这样的:
class treasure
{
public:
std::string name;
double value;
double weight;
};
然后你声明一系列宝藏:
treasure item[100];
获取元素:
//take item name, item value, item weight
for( i = 0; i < itemNumber; i++)
{
std::cout << std::endl << "Enter item name: " << "\t" << "Enter item value(per kg): " << "\t" << "Enter item weight(in kg): " << std::endl;
std::cin >> item[i].name >> item[i].value >> item[i].weight;
}
最后排序:
std::sort(item, item + itemNumber,
[] (auto t1, auto t2) {return t1.value < t2.value;})
关于c++ - 在 C++ 中对多个链接数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42278877/