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 (..))를 예약 할 수 있는지 여부.
불충분 한 정보를 제공해 주셔서 감사합니다.
4 개의 vTarget 변수 1, 2, 3, 4가있는 경우를 의미합니다. 각 변수에 대해 통계 계산을 수행합니다. 이러한 변수에 대한 반복이 두 개 이상 있습니다. 다음 반복을 사용하기 위해 각 변수의 상위 k 개 결과를 맵에 저장하고 싶습니다.
삽입 된 첫 번째 변수 (키 unsigned int "vTarget"포함)가 다음 반복에서 업데이트되지 않습니다 (첫 번째 반복에서 삽입 된 값으로 남아 있음). 그러나 다른 변수 (첫 번째 키 다음에 삽입 된 키)는 업데이트 된 상태로 유지됩니다.
첫 번째 요소를 덮어 쓰지 않고 나머지 요소를 계속 업데이트한다는 것은 무엇을 의미합니까? 어쩌면 예를 들거나 기대 한 바를 설명 할 수 있습니다. –
질문 서식 지정 ... 도움이 – sehe
지도 하나의 고유 키당 하나의 값만 저장할 수 있습니다. 아마도 두 개의 키가 같을 수 있다면 multi_map이 필요할 것입니다. – visitor