C++ 配列 長さ 取得
これでググっても案外出てこない。
C++でこんな風に書きたいと思ってるんだろうけど不思議なもんで出てこない。
int[] ary = new int[10]; system.out.println(ary.length);//10
あいかわらずmelponさんのパクりだけど書いてみよう。
#include <iostream> //配列クラス //ary[index]で要素アクセス出来て //ary.lengthで長さが取得できればいい template<class T> class Array{ private: T* m_pAry; public: const int length; Array(int len):length(len),m_pAry(new T[len]){ } ~Array(void){ if(m_pAry)delete[] m_pAry; } T& operator[](int idx){ return m_pAry[idx]; } }; int main(void){ //====================================== //静的確保 Array<int> ar(7); ar[0] = 5; //要素アクセスと長さの取得 std::cout << ar[0] << std::endl; std::cout << ar.length << std::endl; //====================================== //動的確保 Array<int>* ar1 = new Array<int>(10); (*ar1)[0] = 5; //要素アクセスと長さの取得 std::cout << (*ar1)[0] << std::endl; std::cout << (*ar1).length << std::endl; //====================================== //char*だってはいるよー Array<char*>* ar2 = new Array<char*>(3); (*ar2)[0] = "test"; //要素アクセスと長さの取得 std::cout << (*ar2)[0] << std::endl; std::cout << (*ar2).length << std::endl; std::cout << "hello" << std::endl; char c; std::cin >> c; return 0; };
動的な時が(*ar)[idx]ってなるから格好悪いね。