我一直在尝试在一个类中初始化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值初始化地图以存储其他变量。
答案 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容器的默认构造函数为你做了。