맞는데 왜 틀릴까..?

C++

C++ 실습 문제 20 (C++ 표준 템플릿 라이브러리- STL)

안도일 2022. 5. 24. 16:07

1. STL의 vector 클래스를 이용하는 간단한 프로그램을 작성해 보자. vector 객체를 생성하고, 키보드로부터 정수를 입력받을 때마다 정수를 벡터에 삽입하고 지금까지 입력된 수와 평균을 출력하는 프로그램을 작성하라. 0을 입력하면 프로그램을 종료한다.

 

 

 

 

2. 책의 년도, 책이름, 저자 이름을 담은 Book 클래스를 만들고, vector v;로 생성한 벡터를 이용하여 책을 입고하고, 저자와 년도로 검색하는 프로그램을 작성하시오.

 

메인 함수

메인 함수에서는 BookManager 객체에 있는 함수 run()을 실행시키기만 함.

 

Book 클래스 선언부

생성자를 간단하게 선언하는 방법. this포인터를 사용하지 않고 매개변수를 멤버 변수에 저장할 수 있다.

 

Book 클래스 구현부

 

BookManager 클래스 선언부

 

BookManager 클래스 구현부

BookManager  클래스의 run() 함수에서 0이 입력으로 들어왔을 때 프로그램을 종료하는 방법으로,

end라는 bool형 변수를 선언하여 end가 true가 되었을 때 반복을 끝내는 while문을 사용하였다.

 

 

만약 vector <Book> v를 포인터 vector<Book*> v로 선언하였다면 BookManager 구현부의 주석처럼 변경해야 한다.

 

객체 Book이 소멸되어도 vector<Book> v에 push_back 한 객체는 복사되어 들어간 것이기 때문에 소멸되지 않는다.