我不知道我做错了什么,但我有一张地图:
std::map<std::pair<ID, ID>, std::queue<Datum>> readQueues;
一切都很好,直到我打电话readQueues[std::make_pair(src, dst)];,然后我得到一个错误,我的参数与函数的参数不匹配。有趣的是,整个事情的作品与std::map::find和map::at使用完全相同的参数...任何想法?
的下标运算符map不能用于const映射(或就此而言对映射的常量引用)。那是因为它实际上可能会改变map- 回想一下
m[a] = 7;
即使a不存在于m. 在这种情况下a,m首先插入到。因此语义涉及潜在的修改,而这正是const成员函数不应该做的。
您可以改为使用findwhich 将返回一个迭代器。特别是,当传递的键尚未包含时find返回end()。