vector<> s;
vector<string> Names;
이렇게 두개의 벡터가 잇을때
Names에 있는 string을 가지고 있는 를 s에서 전부 서치한다고 하면
for문을 두번도는수밖에 없는건가??
for(auto& name : Names)
{
std::find(s.begin(), s.end(), ...);
....
}
이게 최선임??
아니면 더 효율적인 알고리즘이 있으면 이름만 얘기해주시면 감사하겓씀
걍 빠르게 하려면 애초에 해쉬로구현해놓던가 하는게 답인가
항상 정렬을 유지한 상태면 이진탐색? - dc App
둘다 정렬된 상태면 투포인터로 o(n) 매칭가능, 아니면 둘다 해시테이블로 만들면 armotized o(1)
가 아니고 o(n)
ㅇㄱㄹㅇ
std unordered_map 써라 해쉬임 - dc App
unordered_map에서 다대다 검색이 되던가
아 다대다면 언오더드 멀티맵쓰면 되지않을까? 헷갈리네 - dc App
names에 있는 string을 하나라도 포함하는 문자열 s를 찾을려면 모든 문자열 s에 대해서 모든 names를 검사할 수 밖에 없지 않나? s를 토큰 분리해서 정렬한다던가 이름 검색을 최적화해서 모든 이름에 대해 검색을 안할 수는 있겠는데
교집합 알고리즘이랑 동일하게 가능할 것 같다 - dc App