Creative Code

queue2(생성자 초기화 리스트, static member, explicit) 본문

C++ Programming

queue2(생성자 초기화 리스트, static member, explicit)

빛하루 2023. 9. 6. 14:40

※main.cpp파일

#include <iostream>

#include "queue.h"



int main(void)

{

	Queue s1(10), s2(100);

	s1.push(100);  

	s1.push(200);

	std::cout << "s1 1st pop() : " << s1.pop() << std::endl;

	s1.push(300);

	std::cout << "s1 2nd pop() : " << s1.pop() << std::endl;

	std::cout << "s1 3rd pop() : " << s1.pop() << std::endl;

	

	s2.push(900);

	s2.push(800);

	std::cout << "s2 1st pop() : " << s2.pop() << std::endl;

	s2.push(700);

	std::cout << "s2 2nd pop() : " << s2.pop() << std::endl;

	std::cout << "s2 3rd pop() : " << s2.pop() << std::endl;

	

	return 0;

}

※queue.h파일

#ifndef QUEUE_H

#define QUEUE_H



class Queue {

private:

	int *array_;

	int rear_;

	int front_;

	int size_;

	

	Queue(const Queue& rhs);

	Queue& operator=(const Queue& rhs);

	static const int QUEUESIZE;

public:

	explicit Queue(int size = QUEUESIZE);

	~Queue();

	

	bool isFull() const;

	bool isEmpty() const;

	

	void push(int data);

	int pop();

};





#endif

※queue.cpp파일

#include <cstdlib>

#include "queue.h"

#include <cassert>



const int QUEUESIZE = Array::getDefaultSize();



Queue::Queue(int size) 

:arr_(size),rear_(0),front_(0) 

{

}



Queue::~Queue() 

{

}



bool Queue::isFull() const {

	return (rear_+1)%arr_.size() == front_;

}



bool Queue::isEmpty() const {

	return front_ == rear_;

}



void Queue::push(int data)

{

	assert(!isFull());

	arr_[rear_] = data;

	rear_ = (rear_+1)%arr_.size();

}



int Queue::pop()

{

	assert(!isEmpty());

	int index = front_;

	front_ = (front_+1)%arr_.size();

	return arr_[index];

}

'C++ Programming' 카테고리의 다른 글

safeArray2(상속)  (0) 2023.09.07
queue3(array클래스와 has -a관계)  (0) 2023.09.06
safeArray(배열 크기)  (0) 2023.09.06
stack3(stack,array클래스 연결)  (0) 2023.09.06
stack2(extern,explicit사용)  (0) 2023.09.06