插入对作为地图值

fre*_*nix 8 c++ stl map

typedef pair<unsigned char, unsigned char> pair_k;
map<unsigned char, pair_k> mapping;
Run Code Online (Sandbox Code Playgroud)

将以这种方式使用:

mapping[100] = make_pair(10,10);
Run Code Online (Sandbox Code Playgroud)

问题是:

  1. 这是允许的吗?从语法上讲,感觉还不错.
  2. 这可以作为一个数组访问,与地图相对吗?

Oli*_*rth 7

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


Jen*_*cke 6

std :: map operator[]返回对100(key)标识的map元素的引用,然后由std :: make_pair(10,10)返回的对覆盖.

我会建议:

map.insert( std::make_pair( 100, std::make_pair(10,10) ) );
Run Code Online (Sandbox Code Playgroud)

插入调用具有仅访问一次映射的优点.