嗨,我有一个问题,在编译时,我不知道我的程序中需要多少个向量。所需的数量取决于在运行时给出的数据集,这将导致需要从 1 到 N 的向量范围。
所以如果数据集需要十个向量,就会创建 vec1,vec2,......vecN
如何动态创建向量,使它们都有不同的名称?
然后我需要分别调用每个数组。大概我可以为此使用字符串和几个循环。
嗨,我有一个问题,在编译时,我不知道我的程序中需要多少个向量。所需的数量取决于在运行时给出的数据集,这将导致需要从 1 到 N 的向量范围。
所以如果数据集需要十个向量,就会创建 vec1,vec2,......vecN
如何动态创建向量,使它们都有不同的名称?
然后我需要分别调用每个数组。大概我可以为此使用字符串和几个循环。
你不能直接这样做。但是,您可以使用映射来存储向量名称和向量本身:
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"
您可以创建一个向量来包含您的向量:
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);
你有一个向量向量,vec[0] 到 vec[n],每个向量都包含向量。
但是,如果您知道向量的数量(例如 10),这最有效。如果您需要按需添加新的,那么矢量列表或地图可能是您更好的选择。