2. main() 함수를 작성하고, std::forward_list를 사용하여 몇몇 시민 정보를 초기화합니다. 나중에 다시 초기화하는 것을 피하기 위해 복사본을 만들어둡니다.
int main()
{
std::forward_list<citizen> citizens = {
{"Kim", 22}, {"Lee", 25}, {"Park", 18}, {"Jin", 16}
};
auto citizens_copy = citizens; // 깊은 복사
std::cout << "전체 시민들: ";
for (const auto &c : citizens)
std::cout << c << " ";
std::cout << std::endl;
3. 나이 정보를 이용하여 투표권이 없는 시민을 리스트에서 제거하겠습니다.
citizens.remove_if([](const citizen &c) {
// 나이가 19세보다 작으면 리스트에서 제거합니다.
return (c.age < 19);
});
std::cout << "투표권이 있는 시민들: ";
for (const auto &c : citizens)
std::cout << c << " ";
std::cout << std::endl;
remove_if() 함수는 주어진 조건에 대해 참을 만족하는 원소를 모두 제거합니다. 이 예제에서는 조건이 간단하므로 람다 표현식을 사용했습니다. 복잡한 조건이라면 리스트에 저장된 원소를 인자로 받아서 bool 값을 반환하는 일반 함수를 사용해도 됩니다.