栈操作能不能取出指定位置的元素,不只限于.top(),求高手指点

hongxuebiao 2010-04-16 04:37:54
栈操作能不能取出指定位置的元素,不只限于.top(),求高手指点
...全文
321 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
hongxuebiao 2010-05-13
  • 打赏
  • 举报
回复
谢谢,我知道怎么做了
ForestDB 2010-04-18
  • 打赏
  • 举报
回复
帮顶。
勇敢的搬砖人 2010-04-18
  • 打赏
  • 举报
回复
友情帮顶
西毒 2010-04-16
  • 打赏
  • 举报
回复
当然可以了啊!只不过就破坏了栈的特性了啊!
hahalxp 2010-04-16
  • 打赏
  • 举报
回复
栈有一个很重要的特殊性,就是存在栈中的数据可以共享。假设我们同时定义:

int a = 3;
int b = 3;

   编译器先处理int a = 3;首先它会在栈中创建一个变量为a的引用,然后查找有没有字面值为3的地址,没找到,就开辟一个存放3这个字面值的地址,然后将a指向3的地址。接着处 理int b = 3;在创建完b的引用变量后,由于在栈中已经有3这个字面值,便将b直接指向3的地址。这样,就出现了a与b同时均指向3的情况。

   特别注意的是,这种字面值的引用与类对象的引用不同。假定两个类对象的引用同时指向一个对象,如果一个对象引用变量修改了这个对象的内部状态,那么另一 个对象引用变量也即刻反映出这个变化。相反,通过字面值的引用来修改其值,不会导致另一个指向此字面值的引用的值也跟着改变的情况。如上例,我们定义完a 与b的值后,再令a=4;那么,b不会等于4,还是等于3。在编译器内部,遇到a=4;时,它就会重新搜索栈中是否有4的字面值,如果没有,重新开辟地址 存放4的值;如果已经有了,则直接将a指向这个地址。因此a值的改变不会影响到b的值。
贪食蛇男 2010-04-16
  • 打赏
  • 举报
回复
你用vector呗
herman~~ 2010-04-16
  • 打赏
  • 举报
回复
栈的数据结构设计本来就是适用于先进后出的结构,如果要随机存取中间元素,建议换个数据结构:例如连续数组等
wade_2003 2010-04-16
  • 打赏
  • 举报
回复
这就是栈的特点,呵呵
pengzhixi 2010-04-16
  • 打赏
  • 举报
回复
那建议就不要用栈了。用其他容器吧。否则这就不叫栈了。
「已注销」 2010-04-16
  • 打赏
  • 举报
回复
可以啊,
每个函数的本地变量都是这么用的,不信就看看反汇编。
Coding4Girls 2010-04-16
  • 打赏
  • 举报
回复
用队列吧

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧