0

我一直在尝试在一个类中初始化 1 个向量和 1 个映射。所以简单地说,一旦创建了类或者更确切地说是一个新对象,就会生成或初始化一个向量和一个映射,以便能够存储项目。

我该怎么做呢?我相当无能,也没有找到任何关于我将如何做到这一点的消息来源。帮助表示赞赏。

在节点.H

class nodes
{
friend ostream &operator<<(ostream &, const nodes&);
vector<string> dataItemsVec;
map<int,int> fingertable;

private:
int nodeNum;    // node number
string dataItems; // data items
public:
nodes();    
nodes(int, string) : dataItemsVec(){} && fingertable(){}; // i am not sure how to do it
~nodes();
}

在节点.cpp

#include "nodes.h"

ostream &operator<<(ostream &printout, const nodes &node)
{
printout<< node.nodeNum << endl;
return printout;
}

nodes::nodes()
{
nodeNum = 0;
dataItems = "";
}

nodes::nodes(int nodeNum,string dataItems)
{
this->nodeNum=nodeNum;
this->dataItems=dataItems;
}

在初始化这个名为“节点”的新对象时。将使用 0 值初始化向量以存储数据项。地图将使用 0 值初始化以存储其他变量。

4

2 回答 2

4

你不需要做任何事情。vectormap导致它们被正确初始化的默认构造函数。

于 2012-05-14T11:40:52.617 回答
0

这是正确的语法:

在节点.h

nodes();
nodes(int, string);

在节点.cpp

    nodes():
    nodeNum(0),
    dataItem(""),
    dataItemsVec(),
    fingerTables()
    {
    }

    nodes::nodes(int i_nodeNum, string i_dataItem):
    nodeNum(i_nodeNum),
    dataItem(i_dataItem),
    dataItemsVec(),
    fingerTables()
    {
    }

Althgough,在您的情况下,您不需要做任何事情,因为 STL 容器的默认构造函数会为您完成。

于 2012-05-14T11:48:07.900 回答