插入对作为映射值

新手上路,请多包涵
typedef pair<unsigned char, unsigned char> pair_k;
map<unsigned char, pair_k> mapping;

将以这种方式使用:

 mapping[100] = make_pair(10,10);

问题是:

  1. 这是允许的吗?从语法上讲,感觉还可以。
  2. 这会作为数组访问而不是地图吗?

原文由 freonix 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 482
2 个回答

这对我来说看起来不错。但请注意,这 不是 数组访问;它看起来像它,因为 std::map 过载 operator[] 。如果你之后做 mapping.size() ,你会发现它会是 1

原文由 Oliver Charlesworth 发布,翻译遵循 CC BY-SA 3.0 许可协议

std::map operator[] 返回对由 100(键)标识的映射元素的引用,然后被 std::make_pair(10,10) 返回的对覆盖。

我会建议:

 map.insert( std::make_pair( 100, std::make_pair(10,10) ) );

插入调用的优点是只访问地图一次。

原文由 Jens Luedicke 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题