emplace与push的区别,emplace不用构造临时对象。
目录
栈的概述:
栈位于头文件<stack>中,是一种先进后出的数据结构,先进的会被压在栈底,最后进的就是栈顶。而且只有栈顶的元素才能被访问,不支持随机访问。
栈的操作:
入栈:通过push或者emplace函数将元素压入栈中。
出栈:通过pop函数将栈顶元素出栈。
查看栈顶元素:通过top函数查看栈顶元素。
判断栈是否为空:通过empty函数判断栈是否为空。
查看栈的大小(存储的元素数量):通过size函数查看栈的大小。
stack<int> stk;
stk.push(2); //入栈
stk.push(3);
int k = stk.top(); //查看栈顶元素
stk.pop(); //出栈
cout << "栈的大小为:" << stk.size() << endl;
if (stk.empty()) {
cout << "栈为空" << endl;
}
else {
cout << "栈不为空" << endl;
}
//拷贝构造赋值
stack<int> stk1(stk);
cout << "栈顶元素为:" << stk.top() << endl;
队列的概述:
队列位于头文件<queue>中,是一种先进先出的结构,只能尾进头出。不支持随机访问。
队列的操作
入队:通过push或者emplace从队尾入队。
出队:通过pop从队头出队。
查看队头元素:通过front查看队头元素。
查看队列是否为空:通过empty判断队列是否为空。
查看队列的大小(存储的元素个数):通过size查看队列中的元素个数。
queue<int> q;
q.push(2); //入队
q.push(3);
q.emplace(4);
q.pop(); //出队
if (q.empty()) { //判断队列是否为空
cout << "队列为空" << endl;
}
else {
cout << "队列大小为:" << q.size() << endl; //查看队列大小
cout << "队头元素为:" << q.front() << endl; //查看队头元素
}
queue<int> q1(q);
cout << "队头元素为:" << q1.front() << endl;
栈与队列的异同
栈和队列都是通过deque(双端队列)实现的,但都不支持随机访问。栈是先进后出,队列先进先出。都通过push(emplace)入栈(队),通过pop出栈(队)。