typedef pair<unsigned char, unsigned char> pair_k;
map<unsigned char, pair_k> mapping;
将以这种方式使用:
mapping[100] = make_pair(10,10);
问题是:
- 这是允许的吗?从语法上讲,感觉还可以。
- 这会作为数组访问而不是地图吗?
原文由 freonix 发布,翻译遵循 CC BY-SA 4.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 许可协议
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答3.3k 阅读
这对我来说看起来不错。但请注意,这 不是 数组访问;它看起来像它,因为
std::map
过载operator[]
。如果你之后做mapping.size()
,你会发现它会是1
。