C++/Library 2021. 3. 19. 19:35

initializer_list

  • C++11

  • <initializer_list> 라이브러리

  • [] 연산자를 사용할 수 없다.

    • foreach문은 내부적으로 iterator를 사용한다.

    • 내부적으로 iterator를 사용하는 foreach문으로 반복문을 구성하면 된다.

      #include <iostream>
      //#include <initializer_list>
      
      class IntArray
      {
          unsigned    len_ = 0;
          int*        data_ = nullptr;
      
      public:
          IntArray(unsigned length)
              : len_(length)
          {
              data_ = new int[len_];
          }
      
          IntArray(const std::initializer_list<int>& list)
              : IntArray(list.size())
          {
              int count = 0;
              for (auto& e : list)
              {
                  data_[count] = e;
                  ++count;
              }
          }
      
          ~IntArray()
          {
              delete[] data_;
          }
      
          friend std::ostream& operator << (std::ostream& out, const IntArray& arr)
          {
              for (unsigned i = 0; i < arr.len_; ++i)
              {
                  out << arr.data_[i] << ' ';
              }
              return out;
          }
      };
      
      int        main()
      {
          using namespace std;
      
          auto il = { 10, 20 , 30 };  // std::initializer_list<int>
      
          IntArray arr1{ il };
          cout << arr1 << endl;
      
          IntArray arr2 = { 1, 2, 3, 4, 5 };
          cout << arr2 << endl;
      }
      
      /* stdout
      10 20 30
      1 2 3 4 5
      */

'C++ > Library' 카테고리의 다른 글

C++ reference_wrapper  (0) 2021.03.21
C++ IntArray  (0) 2021.03.19
C++ chrono  (0) 2021.03.16
C++ assert  (0) 2021.03.12
C++ vector  (0) 2021.03.12