如何在struct数据结构中使用map stl并初始化地图然后引用它?

时间:2016-02-09 13:03:19

标签: c++ struct stl

在struct中包含map然后是结构数组是否正确?

struct node    {             //struct node
    std::map<int ,int> mymap;//stl map within struct
};
struct node n[10];           //array of struct node

然后如何初始化n并引用其中的地图? 如何让迭代器在mymap的struct中映射? 任何最好的方式?

3 个答案:

答案 0 :(得分:1)

糟糕或好主意是基于意见的。但是,这没有错。

std::map不需要初始化。默认构造函数将为您完成。

如何访问地图?

for(size_t i=0;i<10;++i){
    n[i].mymap//.something
}

答案 1 :(得分:0)

 private void cboxcos_SelectionChangeCommitted(object sender, EventArgs e)
    {
        using (var context2 = new tvdm())
        {
            var cus = context2.tblContacts
                .Where(c => c.ClientID == 15)
               .Select(c => new {c.LastName, c.FirstName, c.JobTitle, c.Telephone, c.Mobile, c.EMail })
                .OrderBy(p => p.LastName)
                .ToList();

            dataGridView1.DataSource = cus;               

        }
    }

创建一个默认初始化的10 struct node n[10]; 个数组。由于node有默认构造函数,std::map中的每个node都会构建地图默认值。

要访问地图,只需使用

即可
n

请记住,数组基于0索引,因此n[some_valid_index].mymap//.some_member_function; 需要在some_valid_index范围内

答案 2 :(得分:0)

有一个静态初始化示例:

node n[3] = {
    {
        { {1,2}, {3,4} }
    },
    {
        { {1,2}, {3,4} }
    },
    {
        { {1,2}, {3,4} }
    }
}; 

在n声明之前删除“struct”。 以及如何访问这样的地图元素:

n[1].mymap[1] // = 2
n[2].mymap[3] // = 4

需要指定现代c ++语言标准,对于gcc命令行将是这样的:

g++ -std=c++0x main.cpp