더북(TheBook)

  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 값을 반환하는 일반 함수를 사용해도 됩니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.