gpt4 book ai didi

c++ - 正确初始化指针映射 - map

转载 作者:搜寻专家 更新时间:2023-10-31 00:09:59 24 4
gpt4 key购买 nike

我是 C++ 的新手,甚至在 SO 上寻找相关的 Q/A,但我没有找到适合我的问题的答案。

我真的很难尝试实例化一个新的指针映射 map<p1*, p2*> .

到目前为止,我尝试过:

std::map<myType*, myType*> mapOfVertices = new std::map<myType, myType>;

或者:

std::map<myType*, myType*> mapOfVertices = new std::map<myType*, myType*>;

但我总是得到:

error: conversion from ‘std::map*’ to non-scalar type ‘std::map’ requested std::map mapOfVertices = new std::map;

我很困惑,因为我已经设法成功初始化了其他对象,例如:

myType* myObj = new myType;

如果我的问题有点微不足道,我很抱歉。提前致谢。

最佳答案

您不需要在堆上分配 map 对象本身,您可以直接在堆栈上创建它。

std::map<myType*, myType*> mapOfVertices;

该代码足以创建 map 。如果出于某种原因,您确实想要一个指向映射的指针(涉及在堆上分配它),则需要将声明更改为

std::map<myType*, myType*> * mapOfVertices = new std::map<myType*, myType*>;

(注意类型和变量名之间的额外星号)

根据您提供的代码,并且您自己承认,您确实是 C++ 的新手,因为大多数有经验的 C++ 程序员都知道只有在绝对必要时才使用原始指针,并且您的用例绝对不代表这种情况。我强烈,强烈建议你拿起一本书。 There's a great listing here with suggestions.

关于c++ - 正确初始化指针映射 - map<p*, p*>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40535479/

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