1

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

所以如果数据集需要十个向量,就会创建 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 回答