首页 / C++ / C++常用的STL及方法 (中)
C++常用的STL及方法 (中)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C++常用的STL及方法 (中),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含7089字,纯文字阅读大概需要11分钟。
内容图文
![C++常用的STL及方法 (中)](/upload/InfoBanner/zyjiaocheng/599/addabeeb17cf4cbdb7671738c7fb802b.jpg)
前言
C++常用的STL及方法 (上) :
C++常用的STL及方法 (中上) :
C++常用的 STL 及方法 (中下) :
C++常用的 STL 及方法 (下) :
目录
stack
stack是一种顺序容器适配器. 其大概可看作是栈. 适配器的操作与一般的顺序容器的差异较大, 例如不能在任何位置插入或删除元素等. 还有适配器也无法像一般顺序容器那样初始化, 添加元素只能使用插入方法来进行. 适配器没有迭代器
.empty()
用途 : 判断栈是否为空. 如果为空返回 1, 否则返回 0
一般形式 :
stack<typename>S.empty();
/* typename 为类型名, 其中包含容器类型和数据类型. S 为自定义的标识符. 返回类型为 bool */
#include <iostream>
#include <stack>
using namespace std;
int main(void)
{
stack<string> S;
cout << S.empty() << endl;
return 0;
}
输出结果
1
.size()
用途 : 求出栈中元素的个数.
一般形式 :
stack<typename>S.size();
/* typename 为类型名, 其中包含容器类型和数据类型. S 为自定义的标识符. 返回类型为 size_t */
#include <iostream>
#include <stack>
using namespace std;
int main(void)
{
stack<int> S;
S.push(1); /*入栈*/
S.push(2);
S.push(3);
cout << S.size() << endl;
return 0;
}
输出结果
3
.swap()
用途 : 交换两个栈的元素. 交换时注意容器类型和数据类型
一般形式 :
stack<typename>S1.swap(S2);
/* typename 为类型名, 其中包含容器类型和数据类型. S1 和 S2 为自定义标识符. 返回类型为 void */
#include <iostream>
#include <stack>
using namespace std;
int main(void)
{
stack<int> S1;
stack<int> S2;
S1.push(1); /*入栈*/
S1.push(2);
S1.push(3);
S2.push(4);
S2.push(5);
S2.push(6);
S1.swap(S2);
while(!S1.empty())
{
cout << S1.top() << ' '; /*返回栈顶元素*/
S1.pop(); /*栈顶元素出栈*/
}
cout << endl;
while(!S2.empty())
{
cout << S2.top() << ' ';
S2.pop();
}
return 0;
}
输出结果
6 5 4
3 2 1
.pop()
用途 : 将栈顶元素出栈, 不返回栈顶元素.
一般形式 :
stack<typename>S.pop();
/* typename 为类型名, 其中包含容器类型和数据类型. S 为自定义的标识符. 返回类型为 void */
#include <iostream>
#include <stack>
using namespace std;
int main(void)
{
stack<int> S;
S.push(1); /*入栈*/
cout << S.top() << endl; /*返回栈顶元素*/
S.pop();
cout << S.empty() << endl;
return 0;
}
输出结果
1
1
.push()
用途 : 入栈. 入栈时注意容器类型和数据类型
一般形式 :
stack<typename>S.push(x);
/* typename 为类型名, 其中包含容器类型和数据类型. S 为自定义标识符, x 为变量或常量. 返回类型为 void */
#include <iostream>
#include <stack>
using namespace std;
int main(void)
{
stack<int> S;
S.push(1);
S.push(2);
S.push(3);
cout << S.empty() << endl;
return 0;
}
输出结果
0
.top()
用途 : 返回栈顶元素. 栈顶元素不会出栈
一般形式 :
stack<typename>S.top();
/* typename 为类型名, 其中包含容器类型和数据类型. S 为自定义标识符. 返回类型由自定义的 typename 决定*/
#include <iostream>
#include <stack>
using namespace std;
int main(void)
{
stack<int> S;
S.push(1); /*入栈*/
S.push(2);
S.push(3);
cout << S.top() << endl;
return 0;
}
输出结果
1
queue
queue 是一种顺序容器适配器. 其大概可看作是单向队列. 适配器的操作与一般的顺序容器的差异较大, 例如不能在任何位置插入或删除元素等. 还有适配器也无法像一般顺序容器那样初始化, 添加元素只能使用插入方法来进行. 适配器没有迭代器.
queue不仅有单向队列, 还有优先队列, 其特征是元素之间拥有了优先级, 优先级较高的元素先出队列 (如容器元素类型为 int, 那么值越大的元素优先级越高等).
优先队列的容器类型为
priority_queue<typename>
.empty()
用途 : 判断单向队列是否为空. 如果为空返回 1, 否则返回 0
一般形式 :
queue<typename>Q.empty();
/* typename 为类型名, 其中包含容器类型和数据类型. Q 为自定义的标识符. 返回类型为 bool */
#include <iostream>
#include <queue>
using namespace std;
int main(void)
{
queue<int> Q;
cout << Q.empty() << endl;
return 0;
}
输出结果
1
.size()
用途 : 求出队列中的元素个数.
一般形式 :
queue<typename>Q.size();
/* typename 为类型名, 其中包含容器类型和数据类型. Q 为标识符. 返回类型为 size_t */
#include <iostream>
#include <queue>
using namespace std;
int main(void)
{
queue<int> Q;
Q.push(1); /*入单向队列*/
Q.push(2);
Q.push(3);
cout << Q.size() << endl;
return 0;
}
输出结果
3
.swap()
用途 : 交换两个单向队列的元素. 交换时注意容器类型和数据类型
一般形式 :
queue<typename>Q1.swap(Q2);
/* typename 为类型名, 其中包含容器类型和数据类型. Q1 和 Q2 为标识符. 返回类型为 void */
#include <iostream>
#include <queue>
using namespace std;
int main(void)
{
queue<int> Q1;
queue<int> Q2;
Q1.push(1); /*入单向队列*/
Q1.push(2);
Q1.push(3);
Q2.push(4);
Q2.push(5);
Q2.push(6);
Q1.swap(Q2);
while(!Q1.empty())
{
cout << Q1.front() << ' '; /*输出单向队列的首元素*/
Q1.pop(); /*出单向队列*/
}
cout << endl;
while(!Q2.empty())
{
cout << Q2.front() << ' ';
Q2.pop();
}
cout << endl;
return 0;
}
输出结果
4 5 6
1 2 3
.pop()
用途 : 出单向队列. 但不返回元素
一般形式 :
queue<typename>Q.pop();
/* typename 为类型名, 其中包含容器类型和数据类型. Q 为自定义标识符. 返回类型为 void */
#include <iostream>
#include <queue>
using namespace std;
int main(void)
{
queue<int> Q;
Q.push(1); /*入单向队列*/
Q.push(2);
Q.push(3);
cout << Q.front() << endl; /*输出单向队列的首元素*/
Q.pop();
cout << Q.front() << endl;
return 0;
}
输出结果
1
2
.front()
用途 : 返回单向队列的首元素. 但元素不出队列
一般形式 :
queue<typename>Q.front();
/* typename 为类型名, 其中包含容器类型和数据类型. Q 为标识符. 返回类型由自定义的 typename 决定*/
#include <iostream>
#include <queue>
using namespace std;
int main(void)
{
queue<int> Q;
Q.push(1); /*入单向队列*/
Q.push(2);
Q.push(3);
cout << Q.front() << endl;
return 0;
}
输出结果
1
.back()
用途 : 返回单向队列的尾元素. 但元素不出队列 (不适用于 priority_queue>
一般形式 :
queue<typename>Q.back();
/* typename 为类型名, 其中包含容器类型和数据类型. Q 为自定义的标识符. 返回类型由自定义的 typename 决定*/
#include <iostream>
#include <queue>
using namespace std;
int main(void)
{
queue<int> Q;
Q.push(1); /*入单向队列*/
Q.push(2);
Q.push(3);
cout << Q.back() << endl;
return 0;
}
输出结果
3
.push()
用途 : 入单向队列. 入队列时注意容器类型和数据类型
一般形式 :
queue<typename>Q.push(x);
/* typename 为类型名, 其中包含容器类型和数据类型. Q 为自定义的标识符, x 为变量或常量. 返回类型为 void */
#include <iostream>
#include <queue>
using namespace std;
int main(void)
{
queue<int> Q;
Q.push(1);
Q.push(2);
Q.push(3);
while(!Q.empty())
{
cout << Q.front() << ' ';
Q.pop();
}
cout << endl;
return 0;
}
输出结果
1 2 3
.top()
用途 : 返回队列中最高优先级的元素, 元素不出队列. ( 仅限于 priority_ queue )
一般形式 :
priority_queue<typename>PQ.top();
/* typename 为类型名, 其中包含容器类型和数据类型. PQ 为自定义的标识符. 返回类型由自定义的 typename 决定*/
#include <iostream>
#include <string>
#include <queue>
using namespace std;
int main(void)
{
priority_queue<string> PQ1;
priority_queue<int> PQ2;
PQ1.push("ABC");
PQ1.push("XYZ");
PQ1.push("JKL");
cout << PQ1.top() << endl;
PQ2.push(123);
PQ2.push(999);
PQ2.push(456);
cout << PQ2.top() << endl;
return 0;
}
输出结果
XYZ
999
内容总结
以上是互联网集市为您收集整理的C++常用的STL及方法 (中)全部内容,希望文章能够帮你解决C++常用的STL及方法 (中)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。