====== ヘビゲーム ====== ===== ヘビゲーム作るための下準備(配列編) ===== 今日のメニュー\\ * ポインタと変数の関係 * 変数のアドレスを代入 ⇒ **&** * アドレスがある場所の中身を覗く ⇒ ***** * ポインタを使って変数に別名を付けてアクセス * 配列とポインタの関係(配列の名前は配列の先頭アドレス!** int *p = arr**) * アドレスを使って配列にアクセスしてみる * C言語の配列(配列数は動的決定(その場で決める)できない!) * C言語の配列(配列数の指定に使えるのは定数だけ(**const int**) * 配列は転校生に対応できない! * 伸び縮みできる配列(**vector<型> 配列名**) * vector配列の宣言 **vector<型名> 配列名(配列数, 初期価値);** * vector配列の要素へのアクセス 読み込み、書き込みとも通常の配列と同様 * 配列要素の追加 **push_back(要素)** * 配列要素の挿入** insert(先頭アドレス+何個目, 要素)** * 配列の最後尾の削除 **pop_back()** * 配列の指定要素の削除 **erase(先頭アドレス+何個目)** 伸び縮みできる便利な配列=vector #include #include #include using std::cin; using std::vector; //const int ARRNUM = 10000; int main() { int student_num = 0; printf("生徒の数を入力:"); cin >> student_num; //int型のarr[student_num]をすべて0で初期化 vector arr(student_num, 0); for (int i = 0; i < arr.size(); i++) { //1~student_numをarrに代入 arr[i] = i + 1; } arr.push_back(100); arr.push_back(101); arr.push_back(102); //先頭のポインタをとって来い!(型は空気読め!=auto) auto sentou = arr.begin();//型推論で先頭アドレスをゲット int data = 103; //途中(先頭から何番目を指定)にデータを挿入 arr.insert(sentou + 2, data); //先頭にデータを挿入 arr.insert(arr.begin(), -1); //int arr[student_num] = {0}; for (int i = 0; i < arr.size(); i++) { printf("%d ", arr[i]); } printf("\n"); //ケツを消去 arr.pop_back(); for (int i = 0; i < arr.size(); i++) { printf("%d ", arr[i]); } printf("\n"); //ケツを消去 arr.pop_back(); for (int i = 0; i < arr.size(); i++) { printf("%d ", arr[i]); } printf("\n"); //指定した場所を消去 arr.erase(arr.begin() + 2); for (int i = 0; i < arr.size(); i++) { printf("%d ", arr[i]); } printf("\n"); return 0; }