【问题标题】:Purpose of front() and back() in assigning values in a Queue? (C++)front() 和 back() 在队列中分配值的目的? (C++)
【发布时间】:2010-03-19 20:18:34
【问题描述】:

我已经声明:

queue<int, list<int> > Q

在一系列调用之后:

Q.push(37);
Q.pop();
Q.push(19);
Q.push(3); 
Q.push(13); 
Q.front(); 
Q.push(22); 
Q.push(8);
Q.back();

我得到: 19->3->13->22->8->空

我不明白对 Q.front() 和 Q.back() 的调用是做什么的。据我了解,它们分别返回对第一个或最后一个元素的引用,但我看不出如果没有进行这些调用,我的列表会有什么不同。它们有什么作用吗?

对不起,如果这看起来微不足道,但我正试图弄清楚那些电话是有目的的,或者我的教授只是想和我开玩笑。

【问题讨论】:

    标签: c++ queue linked-list


    【解决方案1】:

    他们给你一个参考,但如果你想用它做点什么,那么你必须使用那个参考。

    例如

    Q.push(37);
    Q.push(19);
    Q.front() = 8;
    

    那你应该...

    8,19
    

    仅仅在自己的行上调用 Q.front() 或 Q.back() 是没有效果的。这些通常被称为访问器函数,它们使您可以访问一个值(有时您可以根据需要对其进行修改),但它们本身不会修改底层数据结构。

    【讨论】:

      【解决方案2】:

      这些调用的返回值没有做任何事情,它们不会改变队列本身,所以你说没有它们你的队列会是一样的是正确的。您的编译器可能也注意到了这一点并对其进行了优化。

      【讨论】:

        【解决方案3】:

        它们对于查看队列中的值很有用,而无需删除和放回它们。它在某些情况下可能很有用!

        例如,如果第一个元素大于 X,您将如何决定从队列中删除第一个元素?

        如果没有front(),您将不得不将其从队列中删除,检查值,然后使用它,如果条件不满足则将其放回。使用此访问器方法,您可以在更改底层数据结构之前轻松检查它。

        【讨论】:

          猜你喜欢
          • 2022-01-18
          • 1970-01-01
          • 2018-10-01
          • 1970-01-01
          • 1970-01-01
          • 2015-12-14
          • 1970-01-01
          • 2011-11-22
          • 2020-09-23
          相关资源
          最近更新 更多