std::find를 사용하여 구조체 벡터 검색
구조체와 같은 복잡한 데이터 구조의 벡터로 작업할 때 내장된 std::find 내부 속성을 기반으로 특정 요소를 검색해야 하는 경우 함수가 충분하지 않습니다. 간단한 예를 사용하여 이 제한을 극복하는 방법을 살펴보겠습니다.
다음 구조체를 고려하세요.
<code class="cpp">struct monster { DWORD id; int x; int y; int distance; int HP; };</code>
이제 이러한 몬스터은 bot.monsters로 명명되었습니다. 특정 ID를 가진 몬스터를 검색하려면 std::find를 사용할 수 있지만 해당 ID는 monster 구조체의 멤버이므로 함수에 어떻게 해야 하는지 알려줘야 합니다. 액세스하세요.
std::find_if 함수는 사용자 정의 기준을 지정하는 방법을 제공합니다. 각 몬스터에서 ID를 추출하여 대상 ID와 비교하는 람다 함수를 정의할 수 있습니다.
<code class="cpp">it = std::find_if(bot.monsters.begin(), bot.monsters.end(), boost::bind(&monster::id, _1) == currentMonster);</code>
currentMonster ID.
Boost 라이브러리에 액세스할 수 없는 경우 고유한 함수 객체를 작성할 수 있습니다.<code class="cpp">struct find_id : std::unary_function<monster, bool> { DWORD id; find_id(DWORD id):id(id) { } bool operator()(monster const& m) const { return m.id == id; } }; it = std::find_if(bot.monsters.begin(), bot.monsters.end(), find_id(currentMonster));</code>
std::find_if와 사용자 정의 기준을 사용하면 복잡한 데이터 구조의 벡터를 효과적으로 검색할 수 있습니다. 특정 멤버 값을 제공하여 데이터 조작에 더 큰 유연성을 제공합니다.
위 내용은 내부 속성을 기반으로 구조체의 벡터를 검색하는 방법: std::find_if 가이드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!