Move History

Fork Selected
  • Algorithms
    Arrays
    Description

    create a pop_first and pop_last functions which will delete first/last element from vector and then return it

    Code
    #include<vector>
    
    template <typename T>
    T
    pop_last(std::vector<T>* v) {
      T result = (*v)[v->size() - 1];
      v->pop_back();
      return result;
    }
    
    template <typename T>
    T
    pop_first(std::vector<T>* v) {
      T result = (*v)[0];
      v->erase(v->begin());
      return result;
    }
    
    template int pop_last(std::vector<int>*);
    template int pop_first(std::vector<int>*);
    Test Cases
    #include<vector>
    template <typename T> T pop_last(std::vector<T>* v);
    template <typename T> T pop_first(std::vector<T>* v);
    
    Describe(pop)
    {
        It(_pop_last_)
        {
          std::vector<int> vec = {1,2,3,4};
          Assert::That(pop_last(&vec), Equals(4));
          Assert::That(pop_last(&vec), Equals(3));
          Assert::That(pop_last(&vec), Equals(2));
          Assert::That(pop_last(&vec), Equals(1));
        }
      
        It(_pop_first_)
        {
          std::vector<int> vec2 = {1,2,3,4};
          Assert::That(pop_first(&vec2), Equals(1));
          Assert::That(pop_first(&vec2), Equals(2));
          Assert::That(pop_first(&vec2), Equals(3));
          Assert::That(pop_first(&vec2), Equals(4));
        }
    };