函数结束时是否会删除std :: unordered_set中的数据?

GoogieK

如果在函数内部,我将数据存储在unordered_set中,然后将指针返回到要存储的对象,这些指针在函数范围之外是否仍然有效?

例如。

int *myFunc(){
    std::unordered_set<int> hashset;

    //add some objects
    hashset.insert(4);
    hashset.insert(5);
    hashset.insert(6);

    int *intptr = &(*hashset.insert(4)); //try to insert an object that may already be in the set, and get a pointer to the object in the set
    return intptr;
}

试图访问*intptr另一个函数会导致错误吗?还是在unordered_set范围结束时释放unordered_set中的数据?

插口

是的,在您的示例中,您将返回一个对象,该对象在unordered_set调用的析构函数时即函数退出其作用域时已被破坏

即使包含在中的元素unordered_set是动态分配的(并且我所说的元素是指包含有效键或值的对象),当集合本身销毁时,它们也会被销毁。

实际上,您可以访问数据并且不会收到任何错误,但是您不应该考虑这种情况,因为这是不安全的仅认为这是错误的。

为了获得所需的内容,您应该自己对包含在集合中的对象进行内部初始化。Anunique_ptr<int>可以做到这一点,因为返回值将在破坏集合时移动它并防止对象被释放。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

std :: unordered_set中的KeyEqual是做什么用的?

来自分类Dev

Unordered_set:移动删除

来自分类Dev

是否可以通过存储桶迭代器从std :: unordered_set中删除元素?

来自分类Dev

ActionBlock 开始或结束时是否从 BufferBlock 中删除项目?

来自分类Dev

当函数在android中结束时清除地图是否值得?

来自分类Dev

了解`std :: unordered_set`的用法

来自分类Dev

std :: unordered_set插入获取对象

来自分类Dev

删除元素时如何遍历STL中的所有元素(如unordered_set)

来自分类Dev

良好的C ++哈希函数unordered_set

来自分类Dev

在c ++中的unordered_set中是否存在任何顺序?

来自分类Dev

具有自定义谓词的std :: unordered_set中的未定义行为

来自分类Dev

std :: unordered_set是否允许插入重复的元素?

来自分类Dev

Eigen的矩阵是否可以在生命周期结束时删除动态分配的数据?

来自分类Dev

何时使用std :: unordered_set代替std :: set?

来自分类Dev

何时使用std :: unordered_set代替std :: set?

来自分类Dev

clear()是否会影响std :: unordered_set的存储区计数?

来自分类Dev

使用std :: unique_ptr的std :: unordered_set

来自分类Dev

g ++ 5中std :: unordered_set的类型不完整的编译错误,在clang ++中编译

来自分类Dev

如何在C ++中使用std :: unordered_set?

来自分类Dev

GCC 4.9的unordered_set和std :: move

来自分类Dev

std :: unordered_set ::擦除复杂度

来自分类Dev

指向std :: unordered_set中元素的指针/引用

来自分类Dev

您如何static_cast std :: unordered_set?

来自分类Dev

std :: unordered_set通过引用与值的返回类型

来自分类Dev

为什么`std :: prev`不会在`std :: unordered_set`的迭代器中引发错误?

来自分类Dev

unordered_set :: find的复杂性是否可以预测?

来自分类Dev

是否在内部修改了unordered_set?

来自分类Dev

C ++ unordered_set <插入函数>返回值

来自分类Dev

unordered_set<BSTR> 的 Hash 和 EqualTo 函数

Related 相关文章

  1. 1

    std :: unordered_set中的KeyEqual是做什么用的?

  2. 2

    Unordered_set:移动删除

  3. 3

    是否可以通过存储桶迭代器从std :: unordered_set中删除元素?

  4. 4

    ActionBlock 开始或结束时是否从 BufferBlock 中删除项目?

  5. 5

    当函数在android中结束时清除地图是否值得?

  6. 6

    了解`std :: unordered_set`的用法

  7. 7

    std :: unordered_set插入获取对象

  8. 8

    删除元素时如何遍历STL中的所有元素(如unordered_set)

  9. 9

    良好的C ++哈希函数unordered_set

  10. 10

    在c ++中的unordered_set中是否存在任何顺序?

  11. 11

    具有自定义谓词的std :: unordered_set中的未定义行为

  12. 12

    std :: unordered_set是否允许插入重复的元素?

  13. 13

    Eigen的矩阵是否可以在生命周期结束时删除动态分配的数据?

  14. 14

    何时使用std :: unordered_set代替std :: set?

  15. 15

    何时使用std :: unordered_set代替std :: set?

  16. 16

    clear()是否会影响std :: unordered_set的存储区计数?

  17. 17

    使用std :: unique_ptr的std :: unordered_set

  18. 18

    g ++ 5中std :: unordered_set的类型不完整的编译错误,在clang ++中编译

  19. 19

    如何在C ++中使用std :: unordered_set?

  20. 20

    GCC 4.9的unordered_set和std :: move

  21. 21

    std :: unordered_set ::擦除复杂度

  22. 22

    指向std :: unordered_set中元素的指针/引用

  23. 23

    您如何static_cast std :: unordered_set?

  24. 24

    std :: unordered_set通过引用与值的返回类型

  25. 25

    为什么`std :: prev`不会在`std :: unordered_set`的迭代器中引发错误?

  26. 26

    unordered_set :: find的复杂性是否可以预测?

  27. 27

    是否在内部修改了unordered_set?

  28. 28

    C ++ unordered_set <插入函数>返回值

  29. 29

    unordered_set<BSTR> 的 Hash 和 EqualTo 函数

热门标签

归档