代码之家  ›  专栏  ›  技术社区  ›  user9267359

如何为以下容器赋值?

  •  0
  • user9267359  · 技术社区  · 7 年前

    有谁知道如何初始化以下容器吗? 键是固定的,应该根据键访问以下两列信息,并且应该可以在迭代期间更新:

    有人能告诉我如何访问以下映射容器中的可变大小列吗?

    map<unsigned int, vector<vector<unsigned int>> > polyMap;
    
    
    
    0                0                   20
                     1                   30 
                     2                   40
                     .                    . 
                  face(n)           some angles
    
    2                0                   20
                     1                   30 
                     .                   .
                  face(m)           some angles
    
    .                .                      .
    .                .                      .
    .                .                      .
    .                .                      .
    (`k vertex) (curesponding faces) (and angles)`
    

    大家好,我的问题似乎不完整:问题是这样的,我有顶点编号(uniq=key)和围绕该顶点的面以及各自的角度:下面是一个示例

    您能否告诉我,是否可以为上述目的制作问题中所示的地图容器?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Jabberwocky    7 年前

    你可能想要这样的东西:

    #include <map>
    #include <vector>
    #include <assert.h>
    
    using namespace std;
    
    int main()
    {
      // Declare initialized polyMap
      map<unsigned int, vector<vector<unsigned int>> > polyMap
      {
        { 11,
          {
            { 1,2 }, { 3,4 }
          }
        },
    
        { 22,
          {
            { 5,6 }, { 7,8 }
          }
        }
      };
    
      // add another element dynamically
      polyMap.insert(pair<int, vector<vector<unsigned int>>>(
        { 33,
          {
            { 9, 10 },{ 11, 12 }
          }
        }
        ));
    
    
      // check expected outcome for some values 
      assert(polyMap[11][0][0] == 1);
      assert(polyMap[11][0][1] == 2);
      assert(polyMap[22][1][1] == 8);
      assert(polyMap[33][1][1] == 12);
    }