【发布时间】:2011-10-12 12:33:03
【问题描述】:
static std::map <unsigned int, CPCSteps> bestKvariables;
inline void copyKBestVar(MaxMinVarMap& vMaxMinAll, size_t& K, std::vector<unsigned int>& temp)
{
// copy top k variables and store in a vector.
MaxMinVarMap::reverse_iterator iter1;
size_t count;
for (iter1 = vMaxMinAll.rbegin(), count = 0; iter1 != vMaxMinAll.rend()&& count <= K; ++iter1, ++count)
{
temp.push_back(iter1->second);
}
}
void myAlgo::phase1(unsigned int& vTarget)
{
CPCSteps KBestForT; // To store kbest variables for only target variable finally put in a global storage
KBestForT.reserve(numVars);
std::vector<unsigned int> tempKbest;
tempKbest.reserve(numVars);
.......
.......
copyKBestVar(mapMinAssoc, KBestSize, tempKbest); // Store k top variables as a k best for this CPC variable for each step
KBestForT.push_back(tempKbest);
.....
.....
bestKvariables.insert(make_pair(vTarget, KBestForT)); // Store k best in a Map
.....
....
}
问题:映射“bestKvariables”不会覆盖第一个元素,但会不断更新其余元素。我试图调试它,但我发现问题出在插入命令中。
提前感谢您的帮助。
另一个问题:我是否可以在开始时保留地图的大小(如 vector.reserve(..))以避免插入成本。
很抱歉提供的信息不足。
我的意思是如果有四个 vTarget 变量 1、2、3、4。我对每个变量进行一些统计计算。 这些变量有不止一次迭代,我想将每个变量的前 k 个结果存储在地图中以在下一次迭代中使用它。
我看到第一个插入的变量(键为 unsigned int "vTarget")在进一步的迭代中没有更新(它仍然是第一次迭代时插入的值)。 但是其他变量(在第一个之后插入的键)保持更新。
【问题讨论】:
-
not overwriting the first element, but it keeps updating the rest of the elements是什么意思?也许你可以举个例子或解释你期望它做什么。 -
问题格式...有帮助
-
只是猜测,每个唯一键只能存储一个值。如果两个键可以相同,也许你需要一个 multi_map。
-
表示,它不更新第一个插入的键,它保持以前的值。但对于其他键,它会在每次迭代时更新。