C++ Qt Creator'中向量成员的值是多少;调试器是什么?

C++ Qt Creator'中向量成员的值是多少;调试器是什么?,c++,qt,debugging,pointers,C++,Qt,Debugging,Pointers,我有两节课。一个是容器 头等舱: class node { private: node *left, *right, *parent; public: node(node* parent,node* left,node* right); virtual ~node() {cout<<"~node()"<<endl;} }; class tree { public: vector<node*> nodes; public:

我有两节课。一个是容器

头等舱:

class node
{
private:
    node *left, *right, *parent;
public:
    node(node* parent,node* left,node* right);
    virtual ~node() {cout<<"~node()"<<endl;}
};
class tree
{
public:
    vector<node*> nodes;
public:
    tree(int size);
    ~tree();

    void showPointers();

};

void tree::showPointers()
{
    for (int i = 0; i < nodes.size(); i++)
    {
        cout<<"nodes["<<i<<"] = "<<nodes[i]<<endl;
    }
}

我希望它们与我存储在
节点
向量中的指针相同。

您看到的地址是存储值的地址。这些地址与什么是值无关——值是指针只是巧合。如果使用
std::vector
而不是
std::vector
,调试器的输出将是相同的

在您的例子中,表达式
&节点[0]
具有值
(节点**)0x9dea0b8
,等等


您需要展开每个
[n]
树项以查看它们的值—存储的指针的值。

树的构造函数中发生了什么?您是否正在创建新指针并将它们放入向量中。然后你迭代这个向量并把它们打印出来。为什么你认为它们应该是一样的?在调试器中,它们应该和终端中的一样,但是有人已经回答了我这个问题谢谢,cout@user3191398这些是向量中存储值(指针)的地址。它们的类型是节点**
(指向节点指针的指针)。但这些地址是什么?例如,如果我有int*i&i指向i哪个指向i的值?我的地址是什么?还有一个问题。如果我这样做,在调试器中它会显示i-*i[0]的值而不是&i[0]。那么为什么在前面的示例中显示&node[0]?@user3191398它只与为向量类型的特定实例发出的调试信息有关。每当你看到某个东西时,只要忽略它,点击左边的
[+]
,就可以深入挖掘。
int main()
{
    tree d(5);

    d.showPointers();

    cout<<"end"<<endl;

}
@0x9dea0b8
@0x9dea0bc
@0x9dea0c0
@0x9dea0c4
@0x9dea0c8