사용자에게 주어진 접두사와 일치하는 문자열 벡터에서 첫 번째 단어를 어떻게 찾을 수 있습니까?

다니엘 코가

정렬 된 문자열 벡터가 있다고 가정 해 보겠습니다.

std::vector<std::string> Dictionary
Dictionary.push_back("ant");
Dictionary.push_back("anti-matter");
Dictionary.push_back("matter");
Dictionary.push_back("mate");
Dictionary.push_back("animate");
Dictionary.push_back("animal");
std::sort(Dictionary.begin(), Dictionary.end());

벡터에서 접두사와 일치하는 첫 번째 단어를 찾고 싶지만 내가 찾은 모든 예는 하드 코딩 된 문자열을 접두사로 사용합니다. 예를 들어, "an"접두사를 찾기위한 부울 단항 함수를 정의 할 수 있습니다.

bool find_prefix(std::string &S) {
    return S.compare(0, 2, "an");
}

std::find_if()첫 번째 일치에 대한 반복자를 찾기위한 함수 의 술어로 사용하십시오 . 하지만 사용자가 주어진 문자열을 접두사로 검색하려면 어떻게해야합니까? 어떤 방식 으로든 이진 술어를 사용할 수 있습니까? 아니면 변수와 매개 변수에 의존하는 "의사 단항"술어를 만드시겠습니까?

아니면이 문제에 사용해야하는 다른 컨테이너와 방법이 있습니까?

접두사 검색을 위해 사전을 저장하는 데 훨씬 더 효율적이고 우아한 구조가 있다는 것을 알고 있지만, 저는 초보자 인자가 학습 프로그래밍이므로 더 복잡한 구조로 모험하기 전에 먼저 표준 컨테이너를 사용하는 방법을 배우고 싶습니다. .

Cigien

find_prefix람다로 쓸 수 있습니다 . 이를 통해 검색하려는 문자열을 캡처하고이를 비교에 사용할 수 있습니다.

string word = ...  // the prefix you're looking for
auto result = std::find_if(Dictionary.begin(), Dictionary.end(), 
                           [&word](string const &S) {
                           return ! S.compare(0, word.length(), word);
});

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관