博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《STL源代码分析》---stl_stack.h读书笔记
阅读量:4511 次
发布时间:2019-06-08

本文共 3005 字,大约阅读时间需要 10 分钟。

Stack堆栈是频繁使用FILO数据结构,FILO指first in last out,最后出来。

因为只有一个堆叠端口,这也是在口腔进入口。

可以在堆栈中只能操作,你不能访问其它元件的堆叠。器。

Stack的实现是依赖其它容器的。用deque做底层数据结构。这种实现。在STL中往往不称做container容器,往往被归类为container adapter容器适配器。deque是双向开口的数据结构,功能远强大于栈,仅仅需简单分装就可以做成栈。

用其它容器做底层数据结构也但是实现栈,vector、list也支持empty、size、back、push_back、pop_back操作。我想用deque是一种折中吧!假设用vector在又一次分配空间时须要拷贝原来空间的元素。释放原来空间。假设使用list的话。每一次push_back、pop_back都涉及空间的分配和释放。

G++ 2.91.57,cygnus\cygwin-b20\include\g++\stl_stack.h 完整列表/* * * Copyright (c) 1994 * Hewlett-Packard Company * * Permission to use, copy, modify, distribute and sell this software * and its documentation for any purpose is hereby granted without fee, * provided that the above copyright notice appear in all copies and * that both that copyright notice and this permission notice appear * in supporting documentation.  Hewlett-Packard Company makes no * representations about the suitability of this software for any * purpose.  It is provided "as is" without express or implied warranty. * * * Copyright (c) 1996,1997 * Silicon Graphics Computer Systems, Inc. * * Permission to use, copy, modify, distribute and sell this software * and its documentation for any purpose is hereby granted without fee, * provided that the above copyright notice appear in all copies and * that both that copyright notice and this permission notice appear * in supporting documentation.  Silicon Graphics makes no * representations about the suitability of this software for any * purpose.  It is provided "as is" without express or implied warranty. *//* NOTE: This is an internal header file, included by other STL headers. *   You should not attempt to use it directly. */#ifndef __SGI_STL_INTERNAL_STACK_H#define __SGI_STL_INTERNAL_STACK_H__STL_BEGIN_NAMESPACE#ifndef __STL_LIMITED_DEFAULT_TEMPLATEStemplate 
>#elsetemplate
#endifclass stack { //友元函数,后面会展开的 friend bool operator== __STL_NULL_TMPL_ARGS (const stack&, const stack&); friend bool operator< __STL_NULL_TMPL_ARGS (const stack&, const stack&);public: typedef typename Sequence::value_type value_type; typedef typename Sequence::size_type size_type; typedef typename Sequence::reference reference; typedef typename Sequence::const_reference const_reference;protected: Sequence c; // 底层容器dequepublic: // 下面全然利用 Sequence c 的操作,完毕 stack 的操作。 bool empty() const { return c.empty(); } size_type size() const { return c.size(); } reference top() { return c.back(); } const_reference top() const { return c.back(); } void push(const value_type& x) { c.push_back(x); } void pop() { c.pop_back(); }};template
bool operator==(const stack
& x, const stack
& y) { return x.c == y.c;}template
bool operator<(const stack
& x, const stack
& y) { return x.c < y.c;}__STL_END_NAMESPACE#endif /* __SGI_STL_INTERNAL_STACK_H */// Local Variables:// mode:C++// End:

版权声明:本文博客原创文章。博客,未经同意,不得转载。

转载于:https://www.cnblogs.com/gcczhongduan/p/4750147.html

你可能感兴趣的文章
HTML特效代码大全
查看>>
private System.ComponentModel.IContainer components = null;
查看>>
数据库的四个基本语句
查看>>
hdu 1754 I Hate It
查看>>
db2常用语句
查看>>
PHP程序员未来路在何方
查看>>
Python基础4(list:列表)
查看>>
常用的自动化测试框架及测试框架的发展(Alpha)
查看>>
C#调用MySQL数据库(使用MySql.Data.dll连接)mysql-connector-net-6.10.4.msi
查看>>
Python: PS 滤镜--高反差保留 (High pass)
查看>>
matlab 高阶(二) —— 数值、溢出问题的解决
查看>>
64 位系统 vs2013 配置 OpenCV-3.1.0
查看>>
古之人不余欺也
查看>>
西藏印象:夜色篇
查看>>
从二叉树到完全二叉树
查看>>
排序算法之插入
查看>>
ubuntu下安装 nginx + php + memcached + mariadb
查看>>
Flink job submit & kafka sasl
查看>>
Vue项目的性能优化之路
查看>>
php在linux后台执行
查看>>