이, 그때는 아마 어떤 종류 및 사용의 정수로 유지하려면 :
그렇지 않으면 가능성이 같은입니다 다른 사람들이 제안한대로 비트 마스크. 그렇지 않으면 문자열로 처리 할 때 동일한 문자열 집합을 사용하여 여러 번 검색하면 통합 비트 마스크로 변환하는 것이 좋습니다.
그러나 문자열 세트가 한 번만 처리되는 경우 세트를 살펴보고 각 문자열을 수동으로 확인하는 것이 좋습니다. 즉석, 이런 식으로 뭔가 :
int myfunc(set<string> in, string search){
assert(search.length() <= 32);
int result = 0;
for(set<string>::iterator iIn = in.begin(); iIn != in.end(); ++iIn)
{
bool isSubset = true;
if (iIn->length() != search.length()) // Is this guaranteed?
isSubset = false;
for (int iSearch = 0; isSubset && iSearch < search.length; ++iSearch)
if (search[iSearch] == '1' && (*iIn)[iSearch] == '0')
isSubset = false;
if (isSubset)
++result;
}
return result;
}
아니면 긴 첫 번째 버전으로 변환은 :
int myfunc(set<string> in, string search){
int result = 0;
long searchInteger = strtol(search.c_str(), NULL, 2);
for(set<string>::iterator iIn = in.begin(); iIn != in.end(); ++iIn)
if ((strtol(iIn->c_str(), NULL, 2) & searchInteger) == searchInteger)
++result;
return result;
}
이 숙제 문제처럼 들린다. – codingbear
사실, 내 개인 프로젝트에 대해 apriori 알고리즘을 구현하고 싶었습니다. –