unordered_map::find() 插入查找的键

发布于 2024-12-04 22:42:50 字数 346 浏览 0 评论 0原文

unordered_map::find() 的一个功能是自动插入我们查找的值为 0 的键吗? 让我说清楚

    unordered_map<int, int> tempMap;
    //some code
    if(tempMap.find(1) == tempMap.end()){
      //do something but not insert the 1 with a corresponding value into the tempMap
    }

,如果我再次查找 1,它在 tempMap 中是否会有 0 作为对应值。 这是unordered_map的一个特性吗?

Is it a feature of unordered_map::find() to insert the key that we lookup with 0 value automatically?
Let me make this clear

    unordered_map<int, int> tempMap;
    //some code
    if(tempMap.find(1) == tempMap.end()){
      //do something but not insert the 1 with a corresponding value into the tempMap
    }

so if I lookup 1 again, will it be there in the tempMap having 0 as corresponding value.
Is that a feature of unordered_map?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

一生独一 2024-12-11 22:42:51

不,find 仅搜索并返回迭代器。

也就是说,std::unordered_map(和 std::map)都会重载将插入的operator[]如果需要,可以使用默认值:

// if element with a key value one exists, return that. otherwise, insert
// a default initialized element (zero in this case), and return that
auto& val = tempMap[1]; 

No, find only searches and returns an iterator.

That said, std::unordered_map (and std::map) both overload operator[] which will insert a default if needed:

// if element with a key value one exists, return that. otherwise, insert
// a default initialized element (zero in this case), and return that
auto& val = tempMap[1]; 
游魂 2024-12-11 22:42:51

否 - find 不插入值。

如果您想要插入之前不存在的值,则可以使用 operator[] 而不是 find

这样做是因为 operator[] 返回对对象的引用。由于不存在空引用之类的东西,因此本质上唯一的选择是让它在搜索以前不存在的项目时抛出异常。已经有一些容器采用了这种行为,但它显然不是很有用,而且从未获得太多的欢迎(我使用了一些这样的容器,发现它很痛苦)。

No -- find does not insert values.

If you want to insert the value if it was not previously present, then you can use operator[] instead of find.

This is done because operator[] returns a reference to an object. Since there's no such thing as a null reference, essentially the only alternative would be to have it throw an exception when searching for an item that wasn't previously present. There have been some containers that adopted that behavior, but it wasn't apparently very useful and never gained much popularity (I used some containers like that and found it a pain).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文