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") не обновляется на последующих итерациях (она остается значением, вставленным на первой итерации)
Но другие переменные (ключи, вставленные после первой) остаются обновленными.