0

クラスで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;
}

'ノード'と呼ばれるこの新しいオブジェクトを初期化すると。ベクトルは、dataItemsを格納するために0の値で初期化されます。マップは、他の変数を格納するために0の値で初期化されます。

4

2 に答える 2

4

何もする必要はありません。のデフォルトコンストラクターでvectorあり、map正しく初期化されます。

于 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()
    {
    }

ただし、あなたの場合は、STLコンテナーのデフォルトのコンストラクターが自動的に行うため、何もする必要はありません。

于 2012-05-14T11:48:07.900 に答える