В моей следующей реализации циклической очереди я не инициализировал array
самостоятельно, и код работал нормально, но моя IDE предложила мне добавить {} сразу после объявления и определения int arr[MAX]
, и теперь это выглядело как как int arr[MAX] {}
. Я хочу знать, в чем разница между этими двумя? Я мог бы инициализировать элементы array
в 0 на int arr[MAX] = {0};
. int arr[MAX]{}
и int arr[MAX] = {0}
одинаковы?
#include <iostream>
using namespace std;
#define MAX 8
template <class T>
class Queue {
private:
int front, rear;
T arr[MAX]{}; //This line over here
public:
Queue(){
front = rear = -1;
}
bool empty();
bool full();
void push(T);
void pop();
void print();
};
template <typename T>
bool Queue<T>:: empty() {
return front == -1 && rear == -1;
}
template <typename T>
bool Queue<T>:: full() {
return (rear + 1) % MAX == front;
}
template <typename T>
void Queue<T>:: push(T data) {
if(full())
cout << "Overflow" << endl;
else {
if(empty())
front = rear = 0;
else {
rear = (rear + 1) % MAX;
}
arr[rear] = data;
}
}
template <typename T>
void Queue<T>:: pop() {
if(empty())
cout << "Underflow" << endl;
else {
if(front == rear)
front = rear = -1;
else {
front = (front + 1) % MAX;
}
}
}
template <typename T>
void Queue<T>:: print() {
if(!empty()) {
int count = (rear + (MAX - front)) % MAX + 1;
for(auto i = 0; i < count; ++i) {
int index = (front + i) % MAX;
cout << arr[index] << " ";
}
}
}
int main() {
Queue<int> qu;
qu.push(4);
qu.push(34);
qu.push(324);
qu.push(314);
qu.push(47);
qu.push(64);
qu.pop();
qu.print();
return 0;
}