C++ 访问地图<;int,pair<;双倍,双倍>&燃气轮机;元素

C++ 访问地图<;int,pair<;双倍,双倍>&燃气轮机;元素,c++,dictionary,C++,Dictionary,我已经通过一个函数传递了一个映射,现在我想访问该对中的元素,这怎么可能呢?我的问题如下所示: void func(map<double ,pair<int ,int > & f) { int d= b+c; } void func(map如果您确定a存在: void func(int a,map<int,pair<double,double>>& m) { double d = m[a].first + m[a].seco

我已经通过一个函数传递了一个
映射
,现在我想访问该对中的元素,这怎么可能呢?我的问题如下所示:

void func(map<double ,pair<int ,int > & f)
{

  int d= b+c;
}

void func(map如果您确定
a
存在:

void func(int a,map<int,pair<double,double>>& m)
{
    double d = m[a].first + m[a].second;
}
void func(int a,map&m)
{
双d=m[a]。第一个+m[a]。第二个;
}
否则:

void func(int a,map<int,pair<double,double>>& m)
{
    double d = 0;
    if( m.find(a) != m.end() ) 
        d = m[a].first + m[a].second;
}
void func(int a,map&m)
{
双d=0;
如果(m.find(a)!=m.end())
d=m[a]。第一个+m[a]。第二个;
}
以下内容可能会有所帮助(在C++11中):()

void打印(const std::map&m)
{
用于(常数自动和p:m)
{
std::cout尝试使用:

void func(map<int, pair<double, double> >& m)
{
    for (auto i : m)
    {
        double d = i.second.first + i.second.second;
    }
}
void func(地图和地图)
{
用于(自动i:m)
{
双d=一秒第一+一秒第二;
}
}

此外,阅读有关地图、配对和模板的手册也很有用。

除非您无意中添加数据,否则您可能希望使用“查找”而不是直接访问。
void func(map<int, pair<double, double> >& m)
{
    for (auto i : m)
    {
        double d = i.second.first + i.second.second;
    }
}