图结构 - 指针不好吗?

Fra*_*mec 0 c++ pointers

我正在为 C++ 中的路径查找算法实现图结构。

当一个新的边或节点被创建时,它被存储在一个单独的向量中,供图类的析构函数稍后删除。我使用指针是因为它们提供了简单的图形导航;我可以通过简单地比较节点的地址来轻松测试节点的身份,或者我可以通过创建指针向量来创建路径,然后直接使用这些指针在图形中导航。

struct Edge
{
    Node* from;
    Node* to;
}

struct Node
{
    Data data;

    std::vector<Edge*> outEdges;
    std::vector<Edge*> inEdges;
}
Run Code Online (Sandbox Code Playgroud)

我读过关于指针是如何坏的,应该避免使用或替换为智能指针的文章(但即使它们也应该避免)。或者优秀的程序员根本不使用它们(有例外)。我知道它们是内存泄漏、安全风险和整体难以正确管理的来源(尤其是在多线程应用程序中)。

我的问题:在这种情况下指针方法不好吗?

编辑 1: 有些问题我在哪里读到过关于指针(智能)的信息应该避免。 https://softwareengineering.stackexchange.com/questions/56935/why-are-pointers-not-recommended-when-coding-with-c/163279#163279

在他回答的第二部分:

  • “C++ 中大多数指针的使用都是不必要的。”
  • “……现代 C++ 习惯用法通常根本不需要指针……”
  • “对于了解现代 C++ 的人来说,很明显,您很少需要任何指针(智能指针或原始指针;除非将它们用作迭代器)。”

Ser*_*eyA 5

我要重复我自己。指针还不错。用友好的黄色字母 (C) 打印并别在墙上。它们非常有用。我从未见过能够完全避免指针的专业 C++ 程序。

管理你自己的指针通常是不好的,除非你正在使用指针管理器。

不受约束的标准内存分配可能是高性能应用程序的瓶颈——但指针不是标准内存分配的同义词。

指针不是内存泄漏或安全风险的来源。指针并不难管理(一般来说并不比编写好的程序更难)。

如果您不想使用指针,则您选择了错误的语言。