在c ++中动态更改数组的名称

时间:2012-07-23 11:28:16

标签: c++

嗨我有一个问题,在编译时,我不知道我的程序中需要多少向量。所需数量取决于运行时给出的数据集,这将导致向量范围需要从1到N.

因此,如果数据集需要10个向量,它将创建vec1,vec2,...... vecN

如何动态创建向量,使它们都具有不同的名称?

然后我需要分别调用每个数组。想必 我可以使用字符串和一些循环。

3 个答案:

答案 0 :(得分: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"

答案 1 :(得分: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);

答案 2 :(得分:0)

你有一个矢量矢量,vec [0]到vec [n],每个都包含矢量。

然而,如果您知道向量的数量(例如10),这将有效。如果您需要按需添加新的矢量,那么矢量列表或地图可能是更好的选择。