multimap 질문
354
19 câu hỏi đã được viết
총알 생성시 초기화를 진행 후multimap<Mybullet*, vec2> _map 변수에 insert
추후 update에서 for문을 이용 _map안의 second(총알의 위치)의 값을 증가된 값으로 변경
for문을 이용하여 iterator에 begin~end()값을 순찰
if문으로 현재의 iter->second(총알의 위치) 값의 좌표를 파악하여 총알 삭제
이런 느낌으로 접근 중인데 삭제를 하려고 하면 메모리 범위를 벗어났다고 하네요
혹시 제가 map을 잘못 생각하고 사용하고 있는건가요?
_map의 size()를 확인할 시에는 분명 총알을 발사할 때마다 size가 늘어나는걸 확인 했음에도 계획대로 되지 않아 질문드립니다
이 코드의 경우 vector를 사용하기에는 빈번하게 추가 삭제가 일어나서 제외하고 multimap을 사용하려고 해봤는데 이런식의 접근이 맞는건가요?
아래는 작성 코드입니다
if (isKeyPressedAndReleased(GLFW_KEY_SPACE))
{
bullet = new MyBullet;
bullet->center = tank.center;
bullet->center.x += 0.2f;
bullet->center.y += 0.1f;
bullet->velocity = vec2(2.0f, 0.0f);
_map.insert(std::pair<MyBullet*,vec2>(bullet, bullet->center));
}
if (!_map.empty())
{
for (std::multimap<MyBullet*, vec2>::iterator iter = _map.begin(); iter != _map.end(); ++iter)
{
iter->first->update(getTimeStep());
iter->second = iter->first->center;
if (iter->second.x > 1.3f) _map.erase(iter);
}
}
if(!_map.empty())
{
for (std::multimap<MyBullet*, vec2>::iterator iter = _map.begin(); iter != _map.end(); ++iter)
{
iter->first->draw();
}
}
Câu trả lời 2
0
이 코드의 경우 vector를 사용하기에는 빈번하게 추가 삭제가 일어나서 제외하고 multimap을 사용하려고 해봤는데 이런식의 접근이 맞는건가요?
-> 자료구조를 여러가지로 테스트 해보시는 것은 공부 삼아서 좋은 일입니다. 그러나 매 프레임마다 모든 요소(element)들을 사용하는 경우에는 multimap을 사용하는 것은 비효율적입니다. multimap은 저장된 element들 중 일부만을 빠르게 찾을 때 사용하지만 vector의 indexing보다는 느립니다. 더 자세한 내용은 자료구조에서 공부를 하셔야할 것 같습니다.
STL 사용법은 이 강의의 범위가 아니지만 효율성을 떠나서 multimap으로 마저 완성해보시는 것도 좋은 연습이라고 생각합니다.
깃허브에서 받은 코드가 왜 강의코드랑 다를까요
0
73
1
Mac vscode 으로 시작하시려는 분들께
0
313
1
마우스 좌우 버튼을 동시에 눌렀을 때의 원의 위치
0
426
1
정답은 어디서볼수있나요?
1
346
2
예제코드
1
490
2
따배C++ 몇 강까지 학습한 후 수강가능 할까요?
1
642
1
15:00 부근 질문 있습니다.
0
420
1
(20.4 참고) 20.4에 해당하는 가이드 페이지가 어디있는지 모르겠습니다.
0
371
1
도형들의 움직임이 너무 빠릅니다...
0
464
1
vcpkg 설치를 했는데
0
682
2
mutiple bullet 관련 질문 드립니다.
0
480
2
실행 후 화면 꺼짐
0
579
2
예제 파일 실행 시, 에러
1
558
1
아직 못풀어도 괜찮을까요?
0
499
1
코드 열었을 때 오류
1
807
3
코딩공부에 대해서 막히는부분
0
335
1
vcpkg 설치 오류
0
593
2
랜덤값 질문입니다.
0
425
1
vcpkg 다운로드에 문제를 겪고있습니다
1
423
1
if 문에 >= 대신 == 넣으면 작동을 하지 않는 이유가 무엇인가요.
0
283
1
multiple bullet 문제
0
316
1
프로그램 실행 순서 질문
0
272
1
2.2.2 상속으로 깔끔하게 init 메서드 질문
0
227
1
txt file로부터 키바인딩
0
298
2

