有没有一个函数可以在c++中获取deque.begin()的int值再进行擦除?[已关闭]

问题描述 投票:0回答:1
#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;
}

我想在擦除mydeque的第一个值之前打印出1的整数值,有没有什么函数可以让我这样做?

c++ deque
1个回答
1
投票

begin() 方法返回一个 迭代器. 你需要对该迭代器进行反引用,以获得该迭代器的 价值 所指的。

int first = *mydeque.begin();

否则,只要用 front() 方法,而不是返回(对)第1个 价值:

int first = mydeque.front();


0
投票
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;

希望这对你有帮助


0
投票

以下将是你做题中最直接、最好的方法。

#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; 
    }
© www.soinside.com 2019 - 2024. All rights reserved.