在插入整数和结构集的映射时,我需要帮助

时间:2015-07-23 09:34:09

标签: c++ dictionary set

代码是:

#include <map>
#include <utility>

typedef struct
{
   int d_number;
   int o_number;
} d_o_pair;

std::set<d_o_pair> d_o_set;
std::map<int, d_o_set> my_map;

}

我想插入地图。但我无法

。我这样使用:this-&gt; my_map [5] .insert(make_pair(0,2))。编译器抛出错误告诉没有函数匹配对插入的调用

2 个答案:

答案 0 :(得分:0)

以下示例代码告诉我们插入地图。要插入设置,您需要重载'&lt;' operator使用构造函数定义结构中的排序条件,并使用insert函数以类似的方式插入。

#include<iostream>
#include<map>

using namespace std;

typedef struct
{
    int d_number;
    int o_number;
}d_o_number;

int main()
{
    d_o_number s1;
    s1.d_number  = 100;
    s1.o_number = 1000;

    std::map<int, d_o_number> d_o_map;
    d_o_map.insert(std::pair<int, d_o_number>(0, s1));

    // showing contents:
    std::map<int,d_o_number>::iterator it = d_o_map.begin();
    std::cout << "d_o_map contains:\n";
    for (it=d_o_map.begin(); it!=d_o_map.end(); ++it)
        std::cout << it->first << " => " << it->second.d_number<<","<<it->second.o_number << '\n';

    return 0;
}

答案 1 :(得分:0)

尝试以下

types_c.h

或以下

#include <map>
#include <set>
#include <utility>

typedef std::pair<int, int> d_o_pair;
typedef std::set<d_o_pair> d_o_set;

int main()
{
    std::map<int, d_o_set> my_map;
    my_map[5].insert( std::make_pair( 0, 2 ) );
}