Advertisement
Guest User

Untitled

a guest
Nov 20th, 2014
162
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.72 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. template <typename T, int shift>
  4. class Array {
  5.     Array<T, shift-1> left;
  6.     Array<T, shift-1> right;
  7. public:
  8.     static const int size = 1 << shift;
  9.  
  10.     T& at(int i) {
  11.         if(i >= left.size)
  12.             return right.at(i - left.size);
  13.         else
  14.             return left.at(i);
  15.     }
  16. };
  17.  
  18. template <typename T>
  19. class Array<T, 0> {
  20.     T data;
  21. public:
  22.     static const int size = 1;
  23.  
  24.     T& at(int i) {
  25.         return data;
  26.     }
  27. };
  28.  
  29. Array<int, 5> data; // tablica o rozmiarze 2**5
  30.  
  31. int main() {
  32.     for(int i=0; i<10; i++) {
  33.         data.at(i) = i;
  34.     }
  35.     std::cout << data.size << std::endl;
  36.     for(int i=0; i<10; i++)
  37.         std::cout << data.at(i) << std::endl;
  38. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement