1

こんにちは、コンパイル時に、プログラムに必要なベクトルの数がわからないという問題があります。必要な数は、実行時に指定されたデータセットによって異なります。これにより、必要なベクトルの範囲は 1 から N になります。

したがって、データ セットに 10 個のベクトルが必要な場合、vec1、vec2、......vecN が作成されます。

ベクトルを動的に作成して、すべてが異なる名前になるようにするにはどうすればよいですか?

次に、各配列を個別に呼び出す必要があります。おそらく、これには文字列といくつかのループを使用できます。

4

3 に答える 3

5

それを直接行うことはできません。ただし、マップを使用してベクター名とベクター自体を格納できます。

map<string, vector<int> > myMap;

次のように簡単に要素を追加できます (そのようなキーを持つ要素がまだ存在しない場合):

vector<int> vec;
myMap["vec"] = vec;

すでに存在するキーを使用すると、値が置き換えられます。例えば:

vector<int> vec;
vector<int> vec1;
myMap["vec"] = vec;
myMap["vec"] = vec1;//now myMap["vec"] holds the vec1 vector

次のような要素に簡単にアクセスすることもできます。

myMap["vec"]//this will access the vector with the key "vec1"
于 2012-07-23T11:29:34.170 に答える
5

ベクターを含むベクターを作成できます。

std::vector<std::vector<int>> my_vector_of_vectors;

// Add a vector
my_vector_of_vectors.push_back(std::vector<int>{});

// Add a number to the inner vector
my_vector_of_vectors[0].push_back(1);
于 2012-07-23T11:32:39.800 に答える
0

ベクトルのベクトル vec[0] から vec[n] があり、それぞれにベクトルが含まれています。

ただし、ベクトルの数 (たとえば 10) がわかっている場合は、これでうまくいきます。必要に応じて新しいものを追加する必要がある場合は、ベクトルのリストまたはマップを使用することをお勧めします。

于 2012-07-23T11:30:39.927 に答える