gpt4 book ai didi

c++ - 使用空的 weak_ptr 作为参数调用 map::count 是否安全?

转载 作者:行者123 更新时间:2023-11-27 23:06:35 24 4
gpt4 key购买 nike

调用map::count安全吗?在 uninitialized thus empty weak_ptr 上安全吗?

我对 C++ 仍然很缺乏经验,也没有确定这一点的技能。

在我的应用程序中,weak_ptr 被保存为 map 中的键,必须首先通过值找到它。如果找不到,未初始化的 weak_ptr 将被返回并在 map::count 中使用。

代码

设置

map<my_ptr, connection_data, owner_less<my_ptr>> m_connections;
typedef map<my_ptr, connection_data, owner_less<my_ptr>>::iterator it;

按数据查找

my_ptr get_my_ptr_from_data(string data){
my_ptr my_ptr_to_send;
for(it iterator = my_ptrs.begin(); iterator != my_ptrs.end(); iterator++) {
if(iterator->second.data == data){
my_ptr_to_send = iterator->first;
break;
}
}
return my_ptr_to_send;
}

发现

my_ptr found_ptr = get_my_ptr_from_data(data);
if(my_ptrs.count(found_ptr) ){

最佳答案

调用find(和count)是安全的,只要您定义的顺序不依赖于非空指针。 find(和 count)对参数所做的唯一事情就是将它用作比较器的参数。

但是,将 weak_ptr 用作关联容器中的键是不安全的。如果它过期,则容器的顺序被破坏,之后尝试使用该容器将产生未定义的行为。

关于c++ - 使用空的 weak_ptr 作为参数调用 map::count 是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23156079/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com