c ++如何创建一个即使对象被覆盖也能持续的指针?

用户7331538

我正在创建一个std::map类型<int, Foo*>我正在使用该emplace函数在 for 循环中填充此地图在这个循环中,我在Foo f = Foo()每次循环迭代中创建一个 Foo 对象并将其插入到映射中,如下所示:

std::map<int, Foo*> mymap;
for(int i = 0 ; i < 4; i ++)
{
    Foo f = Foo();
    mymap.emplace(i, &f);
    mymap[i]->a.pushback(pow(i,2));
}

where ais a vector<int>in classFoo问题很清楚。在下一次重新创建的迭代中插入对fin的引用,从而使上一个指针过时。如何在仍然保留指向in而不是存储 的副本的同时解决此问题智能指针是解决方案吗?(我以前从未使用过它们)。mymapfffmymapf

杰洛德42

您可能只是想要:

std::map<int, Foo> mymap;
for(int i = 0 ; i < 4; i ++)
{
    //mymap.emplace(i, Foo()); // operator[] would do similar anyway
    mymap[i].a.pushback(pow(i, 2));
}

或者,如果你真的想要指针语义

std::map<int, std::unique_ptr<Foo>> mymap;
for(int i = 0 ; i < 4; i ++)
{
    mymap.emplace(i, std::make_unique<Foo>());
    mymap[i]->a.pushback(pow(i,2));
}

如果你真的想要原始拥有指针:

std::map<int, Foo*> mymap;
for(int i = 0 ; i < 4; i ++)
{
    mymap.emplace(i, new Foo()); // calling delete later is required to avoid leak
    mymap[i]->a.pushback(pow(i,2));
}

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在C中创建一个指针

来自分类Dev

C ++:如何创建一个类的对象的多集合?

来自分类Dev

创建一个全局C ++对象

来自分类Dev

C ++-创建一个上帝对象

来自分类Dev

创建一个全局C ++对象

来自分类Dev

如何创建一个内部有数组的动态对象,以使其不被覆盖?

来自分类Dev

C ++指针在for循环中被覆盖

来自分类Dev

C : enQueue : 如何创建一个新的指向尾部的指针?

来自分类Dev

C ++创建一个静态类来存储指针

来自分类Dev

在C中创建一个通用的“函数指针”联合是一个坏主意吗?

来自分类Dev

C ++-是否需要一个指针来覆盖返回类型-继承?

来自分类Dev

C ++删除指向包含另一个指针的对象的指针

来自分类Dev

C ++中的指针:需要使用一个指针的对象应该多大?

来自分类Dev

如何正确创建一个单例对象并在C ++中使用它?

来自分类Dev

如何正确创建一个单例对象并在C ++中使用它?

来自分类Dev

在C ++中,如何动态地从文件中创建一个类的多个对象?

来自分类Dev

如何使用 C# 创建一个复杂的 JSON 对象

来自分类Dev

返回一个临时对象会在C ++中创建一个临时对象吗?

来自分类Dev

C#创建一个东西的实例对象

来自分类Dev

在Structure C ++中创建一个对象的多个实例

来自分类Dev

从 C# 模型创建一个嵌套的 json 对象

来自分类Dev

C ++-更新指针中的值将被覆盖

来自分类Dev

C ++如何在将新对象分配给另一个对象的同时创建它

来自分类Dev

如何在 C++ 中初始化一个局部结构对象(不能创建一个新对象作为局部变量)?

来自分类Dev

C/C++ 如何在一个函数调用中传递一个 const 函数指针或一个简单的指针

来自分类Dev

如何在C ++中使用指针指向另一个指针

来自分类Dev

如何在C中定义一个指向指针数组的指针数组?

来自分类Dev

如何声明一个指向:的void指针数组的指针?在C

来自分类Dev

你能举一个被覆盖的例子吗?

Related 相关文章

  1. 1

    在C中创建一个指针

  2. 2

    C ++:如何创建一个类的对象的多集合?

  3. 3

    创建一个全局C ++对象

  4. 4

    C ++-创建一个上帝对象

  5. 5

    创建一个全局C ++对象

  6. 6

    如何创建一个内部有数组的动态对象,以使其不被覆盖?

  7. 7

    C ++指针在for循环中被覆盖

  8. 8

    C : enQueue : 如何创建一个新的指向尾部的指针?

  9. 9

    C ++创建一个静态类来存储指针

  10. 10

    在C中创建一个通用的“函数指针”联合是一个坏主意吗?

  11. 11

    C ++-是否需要一个指针来覆盖返回类型-继承?

  12. 12

    C ++删除指向包含另一个指针的对象的指针

  13. 13

    C ++中的指针:需要使用一个指针的对象应该多大?

  14. 14

    如何正确创建一个单例对象并在C ++中使用它?

  15. 15

    如何正确创建一个单例对象并在C ++中使用它?

  16. 16

    在C ++中,如何动态地从文件中创建一个类的多个对象?

  17. 17

    如何使用 C# 创建一个复杂的 JSON 对象

  18. 18

    返回一个临时对象会在C ++中创建一个临时对象吗?

  19. 19

    C#创建一个东西的实例对象

  20. 20

    在Structure C ++中创建一个对象的多个实例

  21. 21

    从 C# 模型创建一个嵌套的 json 对象

  22. 22

    C ++-更新指针中的值将被覆盖

  23. 23

    C ++如何在将新对象分配给另一个对象的同时创建它

  24. 24

    如何在 C++ 中初始化一个局部结构对象(不能创建一个新对象作为局部变量)?

  25. 25

    C/C++ 如何在一个函数调用中传递一个 const 函数指针或一个简单的指针

  26. 26

    如何在C ++中使用指针指向另一个指针

  27. 27

    如何在C中定义一个指向指针数组的指针数组?

  28. 28

    如何声明一个指向:的void指针数组的指针?在C

  29. 29

    你能举一个被覆盖的例子吗?

热门标签

归档