gpt4 book ai didi

c++ - Unordered_map 在访问元素时有奇怪的行为

转载 作者:行者123 更新时间:2023-11-27 23:42:35 26 4
gpt4 key购买 nike

我有一个无序的 map ,看起来像这样:

std::unordered_map<std::string, double> payments = { {"8/18", 0.0}, {"7/18", 771.98}, {"6/18", 0.0}, {"5/18", 771.98},
{"4/18", 771.98}, {"3/18", 771.98}, {"2/18", 0.0}, {"1/18", 3859.90},
{"12/17", 771.98}, {"11/17", 0.0}, {"10/17", 1543.96}, {"9/17", 771.98} };

当我这样打印第二个元素时:

for (auto it : payments)
{
std::cout << it.second << " ";
}

我明白了:

0 771.98 0 0 771.98 1543.96 771.98 771.98 771.98 3859.9 771.98

如您所见,我多了一个零,而且顺序不一样。我该如何解决这个问题?

最佳答案

您正在使用 std::unordered_map .这意味着元素没有按特定顺序存储。您的代码“正常”工作。如果您希望维护订单,那么您需要一个类似 std::pair 容器的数组。像std::vector<std::pair<std::string, double>> .示例:

int main()
{
std::vector<std::pair<std::string, double>> payments = { {"8/18", 0.0}, {"7/18", 771.98}, {"6/18", 0.0}, {"5/18", 771.98},
{"4/18", 771.98}, {"3/18", 771.98}, {"2/18", 0.0}, {"1/18", 3859.90},
{"12/17", 771.98}, {"11/17", 0.0}, {"10/17", 1543.96}, {"9/17", 771.98} };

for (auto it : payments)
{
std::cout << it.second << " ";
}
}

输出:

0 771.98 0 771.98 771.98 771.98 0 3859.9 771.98 0 1543.96 771.98 

关于c++ - Unordered_map 在访问元素时有奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53342930/

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