配列
C ++ 11のトラバーサルサイクルの最適化
フォーマット:
以下のための(変数の型変数名:配列名)
- ここでは、変数の型もメンバー式オートタイプを埋めるために使用することができます
- 変換が矛盾しているとする可能性がある場合は、デフォルトのための強力なフォワーディング
例:
int Students[5]{}; //学号
int num = sizeof(Students) / sizeof(int);
for (int i = 0; i < num; ++i)
{
cout << "请输入第" << i + 1 << "个学生的学号:";
cin >> Students[i];
}
//for (int i : Students) //可以用这个
for (auto i : Students) //也可以用这个
{
cout << i << endl;
}
多次元配列を確認
二次元配列トラバーサル:
int students[3][3]
{
{1,2,3},
{4,5,6},
{7,8,9}
};
for (int i = 0; i < 3; i++)
{
for (auto j : students[i]) //用上c++11的新方法,挺好的
{
cout << j << " ";
}
cout << endl;
}
3次元配列が似ている、コードがここに与えられます。
int students[2][2][2]
{
{
{1,2},
{3,4},
},
{
{5,6},
{7,8},
}
};
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 2; j++)
{
for (auto k : students[i][j])
{
cout << k << " ";
}
cout << endl;
}
cout << endl;
}
結果:
配列の注意:
-
そうではないすべて、配列を使用するように強制しない限り、;これはクロスボーダー抜け穴のありふれた問題であるため、プログラムはおそらく予測不可能なエラーを生成するか、攻撃されています!
-
最も低次元優先順位のオペレーティングシステムのメモリに応じて多次元配列
レビューの配列
共通操作
- サイズ()は、コンテナのサイズを照会するために使用され
- すべて初期化するための塗りつぶし(のconst int型)
- 安全なアクセスのための(数値)で(クロスボーダー例外がスローされます)
- オーバーロード[]、配列アクセスと同様に、それは範囲外となり
- 2つのリロードを比較するために使用することができます==
これらは、最も基本的な使い方です!
サンプルコード:
std::array<int, 3> StusID{};
std::array<int, 3> _StusID{25,25,25};
cout << "size = " << StusID.size() << endl;
StusID.fill(25);
for (int i = 0; i < StusID.size(); i++)
{
//cout << "stu[" << i << "] = " << StusID[i] << endl; //不安全
cout << "stu[" << i << "] = " << StusID.at(i) << endl;
}
if (StusID == _StusID)cout << "相等" << endl;
else cout << "不相等" << endl;
結果:
レビューのベクトル
共通操作
図1に示すように、初期化動作
下に見える5つの方法があります:
std::vector<int> StuID1; //空容器
std::vector<int> StuID2{ 3,4,5 }; //有三个数
std::vector<int> StuID3(5); //有五个数,并全为0
std::vector<int> StuID4(3,50); //3个数,全为50
結果は、訪問を示しています。
図2に示すように、一般的な方法
- 一back(値)は、コンテナ番号に挿入されます
- 割り当て(NUM、値)コンテナはNUM値の再初期化された値であります
- クリア()空の容器
- そうでない場合、容器が空である0を返す)(空
- (NUM)容器の内容物への安全なアクセスで(クロスボーダー例外)
サンプルコード:
std::vector<int> StuID1; //定义空容器
StuID1.push_back(5); //插入一个5
StuID1.push_back(10); //插入一个10
for (int i = 0; i < StuID1.size(); i++) //遍历
{
cout << "Stu1 [" << i << "] = " << StuID1.at(i) << " ";
}
cout << endl;
StuID1.assign(3, 8); //重新初始化
for (int i = 0; i < StuID1.size(); i++)
{
cout << "Stu1 [" << i << "] = " << StuID1.at(i) << " ";
}
cout << endl;
StuID1.clear(); //清空
if (StuID1.empty())cout << "空的" << endl;
else cout << "不是空的" << endl;
結果:
自分のハードワークに感謝!!!