c++地图帮助

Help with map C++

本文关键字:帮助 地图 c++      更新时间:2023-10-16

我有一个映射,链接size_t到size_t和int对

std::map< size_type, std::pair<size_t, unsigned int> > mapVals;

基本上我对此的理解是,映射的工作原理类似于堆栈,JST一个接一个地插入,给出类似于:

1 -> (2,2)
2 -> (4,7)
3 -> (8,5)
etc.

我的问题是,我如何获得int的值。即2,7,5。我想用这个值作为while循环的最大长度

映射与堆栈不同;堆栈保持先入后出(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);

可以检索pair的第二个元素:

my_map[9].second  // evaluates to 7

要访问int类型,可以执行以下两种操作之一

unsigned int myint = mymap[key].second;

,其中keysize_t型。这是有效的,因为在map上使用[size_t]返回std::pair<size_t, unsigned int>,然后在此调用.second获得int。

也可以使用迭代器

std::map<size_t, std::pair<size_t, unsigned int> >::iterator itr = mymap.begin(); // say
unsigned int myint = itr->second.second;
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

你可以这样做:

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

我不知道你到底想要什么

 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;
  • it->second:是map的Value部分(在本例中std::pair<size_t,>)
  • >第二。second:是对的第二部分(unsigned int)