【问题标题】:Is there a function to get the int value of the deque.begin() in c++ before erasing it? [closed]在删除之前,是否有一个函数可以在 c++ 中获取 deque.begin() 的 int 值? [关闭]
【发布时间】:2020-09-12 22:42:17
【问题描述】:
#include <iostream>
#include <deque>

int main ()
{
  std::deque<int> mydeque;

  // set some values (from 1 to 10)
  for (int i=1; i<=10; i++) mydeque.push_back(i);

  int first = mydeque.begin(); //this gives me an error
  std::cout<<first<<endl; //expecting to print out 1 before I erase it from mydeque
  mydeque.erase(mydeque.begin());

  return 0;
}

我希望在我想删除它之前打印出 1 的整数值,这是 mydeque 的第一个值,有什么函数可以让我这样做吗?

【问题讨论】:

  • 你可以像*mydeque.begin()一样尊重迭代器,或者使用mydeque.front()
  • mydeque.begin() 返回迭代器
  • 哦,好的,谢谢,我是一个新的c++程序员,我正在学习
  • 是的,请参阅std::deque 和成员函数atoperator[]frontback。因此,您可以使用 mydeque.at(0);mydeque[0];mydeque.front(); 直接访问 dqueue 中的第一个元素。

标签: c++ deque


【解决方案1】:

以下将是您在问题中尝试做的最直接和最好的方法。

#include <iostream> 
#include <deque> 
using namespace std;

int main () { 

         std::deque<int> mydeque; // set some values (from 1 to 10)

         for (int i=1; i<=10; i++)                           
              mydeque.push_back(i); 
         int num = mydeque.front(); //returns the frontmost element without deleting it
         std::cout<<num;
         mydeque.pop_front();//deletes the first element from deque
         return 0; 
    }

【讨论】:

    【解决方案2】:

    begin() 方法返回一个迭代器。您需要取消引用该迭代器以获取它所引用的 value

    int first = *mydeque.begin();

    否则,只需使用front() 方法,它返回(引用)第一个

    int first = mydeque.front();

    【讨论】:

      【解决方案3】:
      std::deque<int> mydeque;
      
      // set some values (from 1 to 10)
      for (int i = 1; i <= 10; i++) mydeque.push_back(i);
      
      auto iter = mydeque.begin();
      int first = *iter;
      /*
          or 
          int first = *mydeque.begin();
          //
              mydeque.begin()  is iterator
          //
      */
      std::cout << first << std::endl; //expecting to print out 1 before I erase it from mydeque
      mydeque.erase(mydeque.begin());
      
      return 0;
      

      希望对你有帮助

      【讨论】:

      • 这实际上相当乏味。无需进入迭代器并使用 auto (最好不要使用)。 C++ 为这个问题试图达到的确切目的提供了 2 个内置函数。我在回答中提到了它们。使用它们通常是最好的选择,而且更容易理解。
      猜你喜欢
      • 2012-11-27
      • 1970-01-01
      • 2013-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-28
      • 2019-09-12
      相关资源
      最近更新 更多