MAGICPOWER 문제 에러 질문드립니다 이현진 MAGICPOWER 에러메시지 RTE (SIGSEGV: segmentation fault, probably incorrect memory access or stack overflow) ** 어디서 스택오버플로우가 나는건가요대체 ... ㅠ ** 코드 #include <iostream> #include <vector> #include <algorithm> #include <functional> using namespace std; class magic_Power { private : int itemCount; vector<int> itemInfo; vector<int>::iterator it; int useCount; int maxPower; public : magic_Power(int itemCount, int useCount) { this->itemCount = itemCount; this->useCount = useCount; this->maxPower = 0; } void setItemInfo(); void useMagic(); int getPower() { return maxPower; } }; void magic_Power::setItemInfo() { int temp; for(int i=0 ; i<itemCount ; i++) { cin>>temp; while(temp < 1) { cout<<"input error..."<<endl; cin>>temp; } itemInfo.push_back(temp); } } void magic_Power::useMagic() { for(int i=0 ; i<useCount ; i++) { for(it = itemInfo.begin() ; it != itemInfo.end() ; it++) { if((*it) == 0) itemInfo.erase(it); } sort(itemInfo.begin(), itemInfo.end(), greater<int>()); it = itemInfo.begin(); maxPower += (*it); (*it)--; } } int main(void) { int testCount; vector<magic_Power> magic; vector<magic_Power>::iterator magicIt; cin>>testCount; for(int i=0 ; i<testCount ; i++) { int item, use; cin>>item>>use; magic_Power *power = new magic_Power(item, use); power->setItemInfo(); magic.push_back(*power); delete power; } for(magicIt = magic.begin() ; magicIt != magic.end() ; magicIt++) { (*magicIt).useMagic(); cout<<(*magicIt).getPower()<<endl; } return 0; } 8년 전
1개의 댓글이 있습니다. Being vector의 erase()는 조심해서 써야 합니다. 표준을 참고하세요. 8년 전 link 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
이현진
MAGICPOWER
에러메시지
RTE (SIGSEGV: segmentation fault, probably incorrect memory access or stack overflow)
** 어디서 스택오버플로우가 나는건가요대체 ... ㅠ **
코드
8년 전