メモ(C++)
ちょっとC++でプログラミングする機会があったので自分用にメモしておこう。
定数以外で長さを指定された配列
int length; cin >> length; int *array; array = new int[length]; delete[] array;
2次元の配列の場合。
int length1=33, length2=4; int **array2d; array2d = new int*[length1]; for(int i=0; i<length1; i++) array2d[i] = new int[length2]; for(int i=0; i<length1; i++) delete[] array2d[i]; delete[] array2d;
std::vector
C++でリスト構造をあれこれしようと思ってググっていたら、リストと同様に使える std::vector なる便利なものがあるらしい。
std::vector<Circle> circle_vector; while (System::Update()) { // マウスが左クリックされたら、新しく円を追加 if (Mouse::LeftClicked()) circle_vector.push_back(Circle( Mouse::Pos(), 20)); // vector 内の全要素を描画 int vector_length = circle_vector.size(); // イテレータで参照する場合 std::vector<Circle>::iterator itr = circle_vector.begin(); for (int i = 0; i < vecotr_length; i++){ (*itr).draw(Palette::Crimson); itr++; } // インデックスを指定して参照する場合 for (int i = 0; i < ex_circle_vector_length; i++) circle_vector[i].draw(Palette::Crimson); }
このイテレータを使ったループの書き方はよろしくなかった。
後で勉強しなおしておこう。
for( std::vector<Circle>::iterator itr = cicle_vector.begin(); i!=circle_vector.end(); ++itr)
(*itr).draw(Palette::Crimson);