我有一个程序,我需要一个很多的向量。它们都以同样的方式启动。例如,以下是所有相同类型的2D矢量:
vector<vector<uint> > OverallArrivalAlgorithm_Blocks;
vector<vector<uint> > BusyArrivalAlgorithm_Blocks;
vector<vector<uint> > firstBusyHourArrivalIndex;
vector<vector<uint> > lastBusyHourArrivalIndex;
vector<vector<uint> > numOverallArrivals;
vector<vector<uint> > numBusyArrivals;
jPoolLoop
{
vector<uint> PoolRowInt;
OverallArrivalAlgorithm_Blocks.push_back(PoolRowInt);
BusyArrivalAlgorithm_Blocks.push_back(PoolRowInt);
firstBusyHourArrivalIndex.push_back(PoolRowInt);
lastBusyHourArrivalIndex.push_back(PoolRowInt);
numOverallArrivals.push_back(PoolRowInt);
numBusyArrivals.push_back(PoolRowInt);
kDatasetLoop
{
OverallArrivalAlgorithm_Blocks[j].push_back(0);
BusyArrivalAlgorithm_Blocks[j].push_back(0);
firstBusyHourArrivalIndex[j].push_back(0);
lastBusyHourArrivalIndex[j].push_back(0);
numOverallArrivals[j].push_back(0);
numBusyArrivals[j].push_back(0);
}
}
如果它们属于不同类型,我会研究模板,但这不是问题。在另一个文件中,我需要大约40个不同的向量。更优雅地做这件事的最“c ++方式”是什么?在python中,我可能会使用字典,因此可以迭代所有列表。将所有这些放在载体中似乎很笨拙,因为那时我需要关心它们的位置等等。我在问,因为我觉得我的代码比它需要的时间长得多。
答案 0 :(得分:0)
好的,所以用我的直觉将Python用于所有可以想象的东西,我把它转换为
// J,K are constants known at runtime. Vector should be JXK
map<string, vector<vector<uint> >> pData;
string metrics[6] = {"OverallArrivalAlgorithm_Blocks","BusyArrivalAlgorithm_Blocks","firstBusyHourArrivalIndex","lastBusyHourArrivalIndex","numOverallArrivals","numBusyArrivals"};
for (int s = 0; s < 6; s++)
pData.insert(std::make_pair(metrics[s], vector<vector<uint> >(J,vector<uint>(K,0))));
答案 1 :(得分:0)
我建议您使用网站cppreference。在您的特定情况下,看起来std::vector
的以下构造函数是您正在寻找的(在C ++ 11中略有不同):
explicit vector( size_type count,
const T& value = T(),
const Allocator& alloc = Allocator());
vector( size_type count,
const T& value,
const Allocator& alloc = Allocator());
这允许您构建count
提供的元素的value
个副本。