C++ templateでstd::vector もどきを実装してみる。
#include <iostream> template <class T> class List { public: List(); List(int size); ~List(); T& operator[](int index); private: T* data; }; template <class T> List<T>::List(int size) { data = new T[size]; return; } template <class T> List<T>::~List() { delete[] data; return; } template <class T> T& List<T>::operator[](int index) { return data[index]; } int main() { List<int> list(4); list[0] = -1; std::cout << "Hello World!" << list[0] << std::endl; return 0; }
ListVector構造に添字(インデックス)でアクセスするのが目的。
動かしてみる。
$ g++ -std=c++11 list.cpp $ ./a.out Hello World!-1
動いた!
参考:
9.8 — Overloading the subscript operator | Learn C++
2016/11/13 追記
コメントで指摘いただきましたが、紹介したコードがデータ構造上List(std::list)よりVector(std::vector)に近い構造のため、ListをVectorに修正させていただきます。