标签: stack

Push和Pop对Stacks意味着什么?

长话短说我的讲师很废话,并且通过高架投影仪向我们展示了中缀,并且他的巨大阴影阻挡了一切,所以我错过了重要的东西

他指的是push和pop,push = 0 pop = x

他举了一个例子,但我看不出他是如何得到答案的,

2*3/(2-1)+5*(4-1)
Run Code Online (Sandbox Code Playgroud)

第1步反向: )1-4(*5+)1-2(/3*2好的,我可以看到

然后他继续编写x和o的操作,我完全迷失了

回答14-5*12-32*/+然后再次逆转得到+/*23-21*5-41

如果有人可以向我解释推送流行音,那么我可以理解我会非常感激,我已经在网上看了很多东西我发现似乎比这更好了,所以我真的需要先了解一下这里

stack terminology infix-notation

24
推荐指数
4
解决办法
12万
查看次数

推送与移动的成本(堆栈与近存储器)以及函数调用的开销

题:

访问堆栈的速度与访问内存的速度相同吗?

例如,我可以选择在堆栈中做一些工作,或者我可以直接使用内存中的标记位置工作.

所以,具体来说:push ax速度是一样的mov [bx], ax吗?同样pop ax的速度是一样的mov ax, [bx]?(假设bx在near内存中占有一个位置.)

问题的动机:

在C中常见的是阻止带参数的琐碎函数.

我一直认为这是因为不仅必须将参数压入堆栈,然后在函数返回后弹出堆栈,还因为函数调用本身必须保留CPU的上下文,这意味着更多的堆栈使用.

但假设有人知道标题问题的答案,那么应该可以根据相同数量的直接内存访问来量化函数用于设置自身的开销(推/弹/保存上下文等).因此标题问题.


(编辑:澄清:near上面使用的是与16位x86架构far分段内存模型相反.)

c x86 assembly stack processing-efficiency

24
推荐指数
2
解决办法
5145
查看次数

如何在C++中克隆对象?还是有另一种解决方案吗?

我写了一个Stack and Queue实现(基于Linked List).有一个堆栈(bigStack).例如,我分开bigStack(例如:stackAstackB).我pop()是一个节点bigStack,我push()stackA.以同样的方式,我push()stackB.我想bigStack不要改变.因此我想克隆该bigStack对象.如何在C++中克隆对象?或者我的问题有另一种解决方案吗?

class Stack : public List {
public:
   Stack() {}
   Stack(const Stack& rhs) {}
   Stack& operator=(const Stack& rhs) {};
    ~Stack() {}

    int Top() {
        if (head == NULL) {
            cout << "Error: The stack is empty." << endl;
            return -1;
        } else {
            return head->nosu;
        }
    }

    void Push(int nosu, string adi, string …
Run Code Online (Sandbox Code Playgroud)

c++ queue stack data-structures

24
推荐指数
1
解决办法
10万
查看次数

Java使用的内存远远多于使用-Xmx分配的内存

我有一个项目,我正在编写一个类,其中教授说我们不允许使用超过200米我用-Xmx50m限制堆栈内存到50米(只是为了绝对肯定)但是根据顶部,它仍然使用300米

我尝试运行Eclipse Memory Analyzer,它只报告26米

这可能都是堆栈上的内存吗?我很确定我从不会超过大约300个方法调用深度(是的,它是一个递归DFS搜索),所以这意味着每个堆栈帧几乎用完了看起来很难相信的兆字节.

该程序是单线程的.有谁知道我可能减少内存使用的任何其他地方?另外,如何检查/限制堆栈使用的内存量?

更新:我现在使用以下JVM选项没有效果(根据顶部仍然约300米): -Xss104k -Xms40m -Xmx40m -XX:MaxPermSize=1k

另一个更新:实际上,如果我让它运行一点点(带有所有这些选项)大约一半的时间它会在4或5秒后突然下降到150米(另一半它不会下降).这真的很奇怪的是我的程序没有随机(并且正如我所说的那样是单线程)所以没有理由它在不同的运行中表现不同

它可能与我正在使用的JVM有关吗?

java version "1.6.0_27"
OpenJDK Runtime Environment (IcedTea6 1.12.3) (6b27-1.12.3-0ubuntu1~10.04)
OpenJDK 64-Bit Server VM (build 20.0-b12, mixed mode)
Run Code Online (Sandbox Code Playgroud)

根据java -h,默认的JVM是-server.我尝试添加-cacao和现在(所有其他选项)它只有59米.所以我想这解决了我的问题.谁能解释为什么这是必要的?另外,我应该知道有什么缺点吗?

还有一个更新:与服务器相比,可可真的很慢.这是一个糟糕的选择

java memory stack memory-management

24
推荐指数
4
解决办法
2万
查看次数

Java Stack push()vs add()

我试图使用Stack,但我对术语有点困惑.

我发现Stack该类只有push(E e)Java doc.

并且具有add(E e)addAll(Collection<? extends E> c)作为Vector类的继承方法.

它们是否具有相同的功能,或者更好地用于push(...)Stack对象插入元素.

换句话说,如果我用add(...)而不是,我会遇到任何问题push(...)吗?

java collections stack interface

24
推荐指数
2
解决办法
3万
查看次数

如何检查Stack <T>是否为空

还有其他方法,除了Stack<T>.Count() == 0检查a Stack<T>是否为空?

来自C++/Java背景,其中"堆栈"类通常具有某种专用的"空"方法,如Java - Stack.empty.

c# stack is-empty

24
推荐指数
2
解决办法
3万
查看次数

术语"网络堆栈"是什么意思?

虽然我在短语"web stack"中看到了"web"的相关性,但我仍然想知道在这种情况下"堆栈"指的是什么.

stack web

23
推荐指数
3
解决办法
2万
查看次数

类的字段,它们是存储在堆栈还是堆中?

我昨天看到了一个问题(对我来说)另一个问题.请看下面的代码:

public class Class1
{
   int A; //as I uderstand, int is value type and therefore lives in the stack
}

class Class2
{
    Run()
   {
       Class1 instance1 = new Class1();
       instance1.A = 10;  //it points to value type, but isnt this reference (on heap)?
   }
}
Run Code Online (Sandbox Code Playgroud)

或者在创建Class1的实例时,它的字段类型也在堆上创建?但后来我不明白什么时候它真的会在堆栈上,因为几乎总是你需要创建一个对象实例才能使用它.

c# heap stack memory-management

23
推荐指数
2
解决办法
1万
查看次数

不要在异常堆栈中显示Python提升行

当我在Python库中引发自己的异常时,异常堆栈将raise-line本身显示为堆栈的最后一项.这显然不是错误,在概念上是正确的,但是当您在外部使用代码时,例如作为模块,将注意力集中在对调试无用的事情上.

有没有办法避免这种情况,并强制Python将前一个到最后一个堆栈项显示为最后一个堆栈项,就像标准的Python库一样.

python stack exception raise

23
推荐指数
1
解决办法
2865
查看次数

按HOME后重新启动应用程序时如何返回最新启动的活动?

熟悉的场景:我有一个Main活动,在按下按钮时启动游戏活动.如果用户按下HOME,然后再次启动我的应用程序,则应该显示Game活动,这是他在使用应用程序时最后所做的事情.

但是,相反的是他再次获得Main活动.我觉得Android正在创建另一个 MainActivity实例并将其添加到该应用程序的堆栈中,而不是仅仅选择顶部的任何内容,因为如果我在重新启动应用程序后按BACK,我会进入游戏活动!并且每次调用Main.onCreate方法,而不是调用GameActivity.onResume.

AndroidManifest.xml几乎是'骨头':

<activity android:name="MainActivity" android:label="@string/app_name">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

<activity android:name="GameActivity" android:label="@string/app_name">
</activity>
Run Code Online (Sandbox Code Playgroud)

如你所见,没有什么太花哨的.

这就是新活动的推出方式,也非常简单:

Intent intent = new Intent(this, GameActivity.class);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

从理论上说,这应该在Android中起到"开箱即用"的作用,因为一个非常相似的问题的答案是:在Android中维护标准应用程序活动后备堆栈状态(使用singleTask启动模式),但事实并非如此.

我一直在阅读和重读有关活动和任务和堆栈的文档,并在SO中浏览所有相关的答案,但我不明白为什么这么简单的设置不能按预期工作.

stack android task android-activity

23
推荐指数
2
解决办法
3万
查看次数