#include <iostream>
#include <vector> //可変長配列
using namespace std;
const int PLAYER_NUM{ 10 };
class samp
{
int n_;//<-プライベート
public:
samp() :n_(0) {}
samp(int _n):n_(_n){}
~samp(){}
void SetN(int _n) { n_ = _n; }
int GetN() { return(n_); }
};
//配列は関数には引数として渡せない!
//(固定長)配列を関数に渡す
void PrintArray(int* p, int _num)//p:配列の先頭アドレス、_numは配列数
{
for (int i = 0; i < _num; i++)
cout << p[i] << " "; //cout << *(p + i) << endl;
cout << endl;
}
void PrintArray(samp *_samp, int _num)
{
for (int i = 0; i < _num; i++)
cout << _samp[i].GetN() << " "; //cout << *(_samp + i) << endl;
cout << endl;
}
//固定長配列と、動的配列で2つの関数を読んで、表示させてみる。
void PrintArray(vector<samp*>& _samplist)
{
for (auto& theI : _samplist)//for-each C++では拡張for文 範囲for文
//for(int i = 0; i < _samplist.size(); i++)
{
cout << theI->GetN() << " ";
}
cout << endl;
}
int main()
{
int arr[PLAYER_NUM]{ 2,4,6,8,10,12,14,16,18,20 };
int num;
cin >> num;
int *player;
player = new int[num];
for (int i = 0; i < num; i++)
player[i] = i + 1;
cout << "固定長配列" << endl;
// for (int i = 0; i < PLAYER_NUM; i++)
// cout << arr[i] << " ";
PrintArray(arr, PLAYER_NUM);
//配列の先頭アドレス=配列名
//
// cout << endl;
cout << "動的配列取得" << endl;
// for (int i = 0; i < num; i++)
// cout << player[i] << " ";
PrintArray(player, num);
delete[] player;
samp Samp[PLAYER_NUM]{ 2,4,6,8,10,12,14,16,18,20 };
// for (int i = 0; i < PLAYER_NUM; i++)
// cout << Samp[i].GetN() << " ";
cout << "固定長オブジェクト配列" << endl; //クラスの、インスタンスの、固定長配列
PrintArray(Samp, PLAYER_NUM);
//オブジェクトの動的取得でオブジェクト数を決める!
//int num;
cin >> num;
int* initList = new int[num];
for (int i = 0; i < num; i++) {
cout << i << "番目の値:";
cin >> initList[i];
}
samp* sampList = nullptr;
sampList = new samp[num]; //sampList[0]~sampList[num-1]までが生成される
for (int i = 0; i < num; i++)
sampList[i].SetN(initList[i]);
PrintArray(sampList, num);
//// for (int i = 0; i < num; i++)
//// cout << sampList[i].GetN() << " ";
//
//
vector<samp *> sampList2;
int n = 0;
while (true)
{
cout << "ただ今のsampListの長さ:" << sampList2.size() << endl;
cin >> n;
if (n != -1) {
samp* p = new samp(n);
sampList2.push_back(p);
}
else
break;
}
//sampListの中身のsmapのn_を全部表示
//for (auto theI : sampList2)
//{
// cout << theI->GetN() << " ";
//}
PrintArray(sampList2);
for (auto theI : sampList2)
delete theI;
cout << "ただ今のsampListの長さ:" << sampList2.size() << endl;
sampList2.clear();
cout << "ただ今のsampListの長さ:" << sampList2.size() << endl;
return 0;
}