map<int , string > test;
test[5] = "가나다";
string str = test[5]; //이과정에서 test.find(5) 이것과 속도면에서 차이가 없는건가요?
음 한마디로 탐색로직이 같냐 다르냐를 묻고싶습니다
map<int , string > test;
test[5] = "가나다";
string str = test[5]; //이과정에서 test.find(5) 이것과 속도면에서 차이가 없는건가요?
음 한마디로 탐색로직이 같냐 다르냐를 묻고싶습니다
test[5]는 test 안에 key가 5인 애가 없으면 새로 만들어서 넣기까지 하기 땜에 추가적인 overhead가 발생할 수 있고, 나중에 test.find(5) != test.end()가 되기 땜에 원치 않는 상황이 발생할 수 있어.
그러니까 단순히 map에 해당 key 항목이 존재하는지를 바꾸고 싶지 않으면 it = test.find(5)로 항목을 찾고 it != test.end()이면 it->second를 갖고 오도록 하는게 더 나을거임
근데 test[5]가 존재하는 것이 확실한 상황이면 둘의 퍼포먼스 차이는 없어
ㄴ감사합니다
같은 거임..위는 함수로 찾는거구 밑은 익덱서임..함수로 표현하냐 인덱서(연산자오버로딩)로 표현하냐의 차이지 안은 아마도 똑같을거임..
이런거는 고민안하고 살랜다 개발하다가 퍼포먼스 고민은 이런거보다 로직문제랑 디비쪽이 대부분
저 이유 땜에 operator[]가 const가 붙지 않는거고. 제대로 쓸라면 이런거는 알아둬야함.