嗨我有一个问题,在编译时,我不知道我的程序中需要多少向量。所需数量取决于运行时给出的数据集,这将导致向量范围需要从1到N.
因此,如果数据集需要10个向量,它将创建vec1,vec2,...... vecN
如何动态创建向量,使它们都具有不同的名称?
然后我需要分别调用每个数组。想必 我可以使用字符串和一些循环。
答案 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),这将有效。如果您需要按需添加新的矢量,那么矢量列表或地图可能是更好的选择。