string* Foooood::topFiveFoo(){
std::map<std::string, unsigned long> volumes;
typedef std::map<std::string, unsigned long>::iterator it_type;
for(i=0;i<nTransactions;i++){
volumes[tDeque.at(i).fooSymbol] += tDeque.at(i).fooShares;
}
string top;
string result[5];
int check = 0;
for(i=0;i<5;i++){
for(it_type iterator = volumes.begin(); iterator != volumes.end(); iterator++) {
if(iterator->second > check){
top = iterator->first;
check = iterator->second;
}
result[i] = top;
volumes.erase(top);
}
}
return new string[5];
}
12 시간 미만의지도에 대해서만 학습 했으므로 여전히 혼란 스럽습니다.
오류가 계속 발생합니다 : "디버그 어설 션이 실패했습니다!" ..... "표현식 : 반복자를 맵핑하거나 설정하지 마십시오."지도에서 레코드를 삭제할 수 없습니다
내 머리 속에 배열에 값을 저장 한 다음지도에서 삭제하면이 작업을 반복 할 수 있습니다. 상위 5 목록을 생성하십시오! ?? 그러나 나는 최고의 가치를 지울 수 없으며 그 이유를 알 수 없습니다. 삭제 된 요소로 반복자 포인트, 그것은 erase
후 무효가되어, 경우 std::map::erase
Iterator validity
Iterators, pointers and references referring to elements removed by the function are invalidated. All other iterators, pointers and references keep their validity.
에서
여기서'nTransactions'을 (를) 설정합니까? –
두 번째 for 루프 다음에 어딘가에 닫는 대괄호가 누락되었습니다. 어디로 가야합니까? – Xymostech
'nTransactions'은 클래스 외부에 저장됩니다. – Will