在类中初始化1个Vector和1个Map

时间:2012-05-14 11:39:33

标签: c++ map vector initialization

我一直在尝试在一个类中初始化1个向量和1个映射。 简而言之,一旦创建了类或者更新的对象,就会生成或初始化矢量和地图以便能够存储项目。

我怎么能真正去做呢?我是无能为力的,没有找到任何关于我如何能够做到这一点的来源。感谢帮助。

在Nodes.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();
}

在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;
}

初始化这个名为'nodes'的新对象。 将使用0值初始化向量以存储dataItem。 将使用0值初始化地图以存储其他变量。

2 个答案:

答案 0 :(得分:4)

你不需要做任何事情。 <{1}}和vector的默认构造函数会使它们正确初始化。

答案 1 :(得分:0)

这是正确的语法:

在nodes.h中

nodes();
nodes(int, string);

在nodes.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容器的默认构造函数为你做了。