ヘビゲーム
ヘビゲーム作るための下準備(配列編)
今日のメニュー
- ポインタと変数の関係
- 変数のアドレスを代入 ⇒ &
- アドレスがある場所の中身を覗く ⇒ *
- ポインタを使って変数に別名を付けてアクセス
- 配列とポインタの関係(配列の名前は配列の先頭アドレス! int *p = arr)
- アドレスを使って配列にアクセスしてみる
- C言語の配列(配列数は動的決定(その場で決める)できない!)
- C言語の配列(配列数の指定に使えるのは定数だけ(const int)
- 配列は転校生に対応できない!
- 伸び縮みできる配列(vector<型> 配列名)
- vector配列の宣言 vector<型名> 配列名(配列数, 初期価値);
- vector配列の要素へのアクセス 読み込み、書き込みとも通常の配列と同様
- 配列要素の追加 push_back(要素)
- 配列要素の挿入 insert(先頭アドレス+何個目, 要素)
- 配列の最後尾の削除 pop_back()
- 配列の指定要素の削除 erase(先頭アドレス+何個目)
Listing. 1: 伸び縮みできる便利な配列=vector
- "theMain.cpp"
#include <cstdio> #include <iostream> #include <vector> 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<int> 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; }