我有一个像这样的c ++地图:
std::map<int, int> points;
我知道我可以访问这两个整数,例如在像这样的for循环中
for (auto map_cntr = points.begin(); map_cntr != points.end(); ++map_cntr)
{
int A = map_cntr->first; // key
int B = map_cntr->second; // val
}
但我想知道我如何能够整体访问每个点(而不是像上面那样的条目)。
我想到这样的事情:
for (auto map_cntr = points.begin(); map_cntr != points.end(); ++map_cntr)
{
auto whole_point = points.at(map_cntr);
}
实际上,我想对地图的一个条目(点)的整数进行操作,并使用地图的以下条目(点)的整数。
答案 0 :(得分:4)
我想对地图的一个入口(点)的整数进行操作 使用地图的以下条目(点)的整数。
Map
不适合执行操作的容器,具体取决于您要根据先前元素修改当前元素的元素序列。对于那些东西,你可以使用矢量或数组对。
答案 1 :(得分:1)
您可以使用foreach循环
std::map<int, int> points;
for (auto pair : points)
{
// pair - is what you need
pair.second;
pair.first;
auto whole_point = pair;
}
答案 2 :(得分:0)
我想对地图的条目(点)的整数进行操作,并使用地图的以下条目(点)的整数
您无法直接修改地图中[key,value]对的键。如果您需要这样做,则必须擦除该对并插入另一个。
如果你只需要写一对的值,或者只需要读取对,你就可以用一个迭代器来完成它,如下所示:
// assuming the map contains at least 1 element.
auto it = points.begin();
std::pair<const int, int>* currentPoint = &(*it);
it++;
for (; it != points.end(); ++it) {
auto& nextPoint = *it;
// Read-only: currentPoint->first, nextPoint.first
// Read/write: currentPoint->second, nextPoint.second
currentPoint = &nextPoint;
}