Person이라는 구조체에 대한 포인터의 링크 된 목록으로 구성된 데이터베이스를 검색해야합니다. Person 안에는 이름, 성, 사회 보장 등 많은 데이터가 있습니다. 그것은 모두 허구이며 중요하지 않습니다. 내 문제는 검색을 위해 구조체의 어느 부분이 비교되는지를 결정하는 사용자 입력을 기반으로 검색을 수행해야한다는 것입니다. 모든 데이터가 struct Person의 멤버로 저장되었으므로 (8 개의 검색 함수를 작성하지 않은 것처럼) 매핑하는 것이 가장 좋은 방법이라고 생각합니다. 그러나 매핑의 내 이해는 거의 존재하지 않을만큼 가난합니다. . 관련 코드는 다음과 같습니다.C++ map을 사용하여 struct/class에 액세스하십시오.
List * find(List * database, //mapping stuff, string name)
{
//run search
return database;
}
void search(List * database)
{
string field, searchtype, userinput;
cout << "To search for a person, enter information in this format: 'field equal
value' or 'field begins value'. Type 'clear' to
return to original database. Type 'exit' to leave the program\n";
while(field != "exit")
{
cin >> field >> searchtype >> userinput;
if(userinput == "firstname") //this is just for example, I would have to write one of these out for each parameter.
{
List * smallerdb = find(database, map(//mapping stuff?), string userinput);
}
}
}
이것은 학교용이므로 다른 라이브러리를 사용하는 것이 좋습니다. 고맙습니다!
매핑 할 필요가 없습니다. 비교할 필드의 "상태"로 초기화되는 매개 변수화 된 * comparator *가 필요합니다. 그런 다음 비교기를 사용하십시오 (가능성이있는 펑터). – WhozCraig
검색 함수에 포인터를 멤버로 전달하고이를 사용하여 목록의 각 항목에서 데이터를 검색 할 수 있습니다. – antlersoft
필자가 매핑을 위해 펑터를 착각하고 있다고 생각하지만, 나는 여전히 펑터 (functor)에 대해서는 매우 모호합니다. 나를 올바른 방향으로 인도 할 수 있다고 생각하니? – musicman1007