如何为以下容器赋值?
Posted
技术标签:
【中文标题】如何为以下容器赋值?【英文标题】:How to assign value to following container? 【发布时间】:2018-01-25 12:18:55 【问题描述】:谁能告诉如何初始化以下容器? 密钥是固定的,下面两列信息应该根据密钥访问,并且应该可以在迭代过程中更新:
谁能告诉我如何访问以下地图容器中可变大小的列?
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)和围绕该顶点的面和各自的角度:下面显示了一个示例
您能否告诉我是否可以为上述目的制作问题中所示的地图容器?
【问题讨论】:
初始化?你什么意思?这将是默认初始化的,如果您想要其他需要告知的内容。访问列?你尝试了什么,它是如何失败的?... polyMap key1, 1,2,3,4, key2, 5,6,7,8 ;
@pergy:不应该。你需要pm[0].resize(1); pm[0][0].push_back(...);
为什么要用这种你不懂的数据结构?
是的,我已经编辑过了..
【参考方案1】:
你可能想要这样的东西:
#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);
【讨论】:
这看起来令人满意的结果...非常感谢@Michael Walz @Jackyone 如果您觉得这个答案有用,请点赞/接受它,以便其他人知道它很有用。 @Jackyone 不,你没有。您需要单击答案顶部的绿色勾勒复选标记。以tour. @Jackyone :呃,不,你没有。至少,你的点赞不会显示给其他人,因为你没有足够的声望;你可以做的,就是“接受”答案。单击向上/向下投票按钮下的灰色刻度线。这将变为绿色,并将答案标记为“已接受”以上是关于如何为以下容器赋值?的主要内容,如果未能解决你的问题,请参考以下文章