我有一张地图将size_t链接到一对size_t和int
std::map< size_type, std::pair<size_t, unsigned int> > mapVals;
基本上我对此的理解是,map的工作类似于stacks,jst一个接一个地插入,给出类似的东西:
1 -> (2,2)
2 -> (4,7)
3 -> (8,5)
etc.
我的问题是,如何获取int的值。即2,7,5
。我想将此值用作while循环的最大大小。
答案 0 :(得分:4)
地图与堆栈不相似;堆栈维护先进先出(FILO)策略。地图是将键映射到值的东西。
如果您执行以下操作:
typedef std::pair<size_t,unsigned_int> my_pair;
// Insert elements
my_map[3] = my_pair(2,2);
my_map[9] = my_pair(4,7);
my_map[7] = my_pair(8,5);
您可以将对中的第二个元素检索为:
my_map[9].second // evaluates to 7
答案 1 :(得分:1)
要访问int,您可以执行以下两项操作之一
unsigned int myint = mymap[key].second;
其中key
的类型为size_t
。这是有效的,因为在地图上使用[size_t]
会返回std::pair<size_t, unsigned int>
,然后在此处调用.second
会获得uint。
您也可以使用迭代器
std::map<size_t, std::pair<size_t, unsigned int> >::iterator itr = mymap.begin(); // say
unsigned int myint = itr->second.second;
答案 2 :(得分:0)
我不确定你想要什么
for (std::map< size_type, std::pair<size_t, unsigned int> >::iterator it = mapVals.begin(); it != mapVals.end() ; it++)
cout << it->second.first << " " << it->second.second << endl;
Value
部分(在本例中为std :: pair&lt; size_t,unsigned int&gt;)答案 3 :(得分:0)
typedef std::map< size_type, std::pair<size_t, unsigned int> > mymapT;
mymapT mapVals;
... // fill the map
first = mapVals[1].second;
second = mapVals[2].second;
third = mapVals[3].second;
... // do something useful
答案 4 :(得分:0)
您可以这样做:
typedef std::map< size_type, std::pair<size_t, unsigned int> > myMap;
myMap mapVals;
// ... populate
myVals[1] = std::pair<size_t, unsigned int>(2,2);
// ...
for (myMap::const_iterator it = myVals.begin(); it != myVals.end(); ++it)
unsigned int each_value = it->second.second;
第一个it->second
将为您提供std::pair <size_t, unsigned int>
元素。第二个second
将为您提供该对中包含的unsigned int
。