gpt4 book ai didi

C++ STL map 同时更新所有值

转载 作者:行者123 更新时间:2023-11-28 01:19:01 28 4
gpt4 key购买 nike

我需要用 C++ 更新 map 的所有值(整数)。所有值都将乘以一个 float (0.30),因此无需一个一个地执行。

我可以手动完成,但我想知道是否有办法一次将它们全部相乘。

map < string, int >ouremployees = {

{"Haaziq", 80000},
{"Aldo", 100000},
{"Monte", 30000},
{"Carlo", 20000},
{"Afif", 50000},

// THERE ARE MORE WAY WAY MORE BUT ALL THE INT NUMBERS/ VALUES NEED TO BE //MULTIPLIED BY .30 ALL OF THEM

};

最佳答案

在任何情况下,您都必须“手动”执行此操作。:)

这是一个演示程序

#include <iostream>
#include <map>

int main()
{
std::map <std::string, int> ouremployees =
{
{ "Haaziq", 80000 },
{ "Aldo", 100000 },
{ "Monte", 30000 },
{ "Carlo", 20000 },
{ "Afif", 50000 },
};

double multiplier = 0.3;

for ( auto &p : ouremployees ) p.second *= multiplier;

for ( const auto &p : ouremployees ) std::cout << p.first << ' ' << p.second << '\n';

return 0;
}

它的输出是

Afif 15000
Aldo 30000
Carlo 6000
Haaziq 24000
Monte 9000

例如,您可以使用标准算法 std::for_each 而不是基于范围的 for 循环。

例子

#include <iostream>
#include <map>
#include <iterator>
#include <algorithm>

int main()
{
std::map <std::string, int> ouremployees =
{
{ "Haaziq", 80000 },
{ "Aldo", 100000 },
{ "Monte", 30000 },
{ "Carlo", 20000 },
{ "Afif", 50000 },
};


std::for_each( std::begin( ouremployees ), std::end( ouremployees ),
[multiplier = 0.3]( auto &p ) { p.second *= multiplier; } );

for ( const auto &p : ouremployees ) std::cout << p.first << ' ' << p.second << '\n';

return 0;
}

注意 map 的第二个模板参数可能应该声明为类型参数double

关于C++ STL map 同时更新所有值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57481298/

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