Home | History | Annotate | Download | only in deque.capacity
      1 //===----------------------------------------------------------------------===//
      2 //
      3 //                     The LLVM Compiler Infrastructure
      4 //
      5 // This file is dual licensed under the MIT and the University of Illinois Open
      6 // Source Licenses. See LICENSE.TXT for details.
      7 //
      8 //===----------------------------------------------------------------------===//
      9 
     10 // <deque>
     11 
     12 //       reference operator[](size_type __i);
     13 // const_reference operator[](size_type __i) const;
     14 //
     15 //       reference at(size_type __i);
     16 // const_reference at(size_type __i) const;
     17 //
     18 //       reference front();
     19 // const_reference front() const;
     20 //
     21 //       reference back();
     22 // const_reference back() const;
     23 
     24 #include <deque>
     25 #include <cassert>
     26 
     27 std::deque<int>
     28 make(int size, int start = 0 )
     29 {
     30     const int b = 4096 / sizeof(int);
     31     int init = 0;
     32     if (start > 0)
     33     {
     34         init = (start+1) / b + ((start+1) % b != 0);
     35         init *= b;
     36         --init;
     37     }
     38     std::deque<int> c(init, 0);
     39     for (int i = 0; i < init-start; ++i)
     40         c.pop_back();
     41     for (int i = 0; i < size; ++i)
     42         c.push_back(i);
     43     for (int i = 0; i < start; ++i)
     44         c.pop_front();
     45     return c;
     46 };
     47 
     48 int main()
     49 {
     50     {
     51         std::deque<int> c = make(10);
     52         for (unsigned i = 0; i < 10; ++i)
     53             assert(c[i] == i);
     54         for (unsigned i = 0; i < 10; ++i)
     55             assert(c.at(i) == i);
     56         assert(c.front() == 0);
     57         assert(c.back() == 9);
     58     }
     59     {
     60         const std::deque<int> c = make(10);
     61         for (unsigned i = 0; i < 10; ++i)
     62             assert(c[i] == i);
     63         for (unsigned i = 0; i < 10; ++i)
     64             assert(c.at(i) == i);
     65         assert(c.front() == 0);
     66         assert(c.back() == 9);
     67     }
     68 }
     69