gpt4 book ai didi

c++ - 查找和排序列表

转载 作者:太空宇宙 更新时间:2023-11-04 16:30:14 25 4
gpt4 key购买 nike

所以我有一个像这样的 2 列列表:

2834    2
2934 1
2712 1
2834 3
2889 1
2659 1
2934 1
2760 1
2173 1
2834 1
2760 1
2834 2

第一列是商品ID,第二列是购买的商品数量,每件商品的价格在另一个文件中。我需要做的是找出每件商品的总订购数量,将其乘以价格,然后按收入显示前五名商品。例如,上面的 2834 被订购了 8 次,它的价格是 2 美元,所以 2834 的总收入是 16 美元。我如何找到一个项目的所有出现(数量),将其数量和 ID 号保存在某处,并对其他项目执行相同的操作而不重复上一个项目。有人告诉我 map 在这里很有用,但我不知道如何使用它们。

最佳答案

使用一个映射,其中键是身份证号,值是数量:

std::map<int, int> quantities;

遍历列表并更新 map 中的相应条目。您可以在 map 上使用 [] 运算符来访问与给定键对应的值。例如,如果您有一个 ID 和数据中的数量,您可以这样做:

quantities[id] += quantity;

无需初始化 map 即可工作,因为如果 [] 运算符要求 map 中尚不存在的条目,它会自动插入一个默认值,并且默认值int 为零。

现在,您可以浏览 map 并找到所有商品的价格。 map 的迭代器为您提供了一个,其中第一个元素是 map 的键,第二个元素是该键的值。您可以像这样编写一个循环来打印 map 的内容:

for (std::map<int, int>::const_iterator it = quantities.begin();
it != quantities.end();
++it)
{
std::cout << it->first << " " << it->second << std::endl;
}

如果您找到每件商品的价格并将其乘以it->second,您就会得到想要的东西。

关于c++ - 查找和排序列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7894600/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com