4

画像に示すように、リストへのポインターを格納するベクターを作成したいと思います。見た目はこんな感じ ここでいくつのリストが必要になるかわかりません。だから、私はこのような関数を書きたい

vector<node*> address; //node is class.
if ((int)address.size()<number)  //number is integer taken as input to function.
    { while((int)address.size()!=number)
        {address.push(/*here I want some function which will generate
 empty list and return pointer to head node or any information 
that will help to access list later*/)
        }
else
{    address[number-1].push_back(name); //name has type string;
//this line may be wrong for syntax but idea is A[i] gives me 
   // list where I want to put name.

}

できればSTLライブラリを使用してください。

4

2 に答える 2

4

STLライブラリを使用したい場合は、そのまま使用してください

std::vector<std::list<node>> address; //node is class (note that you can pass size here)

// Using your code in your code:
if ((int)address.size() < number)  //number is integer taken as input to function.
{
        address.resize(number);
}
else
{    address.back().push_back(name); //name has type string;

}

nodeは、ベクターにプッシュする要素のタイプであることに注意してください。@johnが言ったように、文字列のリストを保持したい場合は、次のように宣言addressします。

 std::vector<std::list<std::string>> address;

また、 が原因でエラーが発生した場合は>>、これを C++11 としてコンパイルするか、次のように記述addressします。

 std::vector<std::list<std::string> > address;
于 2013-09-15T09:39:26.180 に答える