C++11講座9回
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
第9回はC++11での固定長配列になります。
ここからは、C++11で新登場したライブラリについての説明を行...
固定長配列を使用する場合
1: #include <iostream>
2:
3: using namespace std;
4:
5: int main()
6: {
7: //宣言
8: int arr[5];
9:
10: //初期化
11: for (auto& i : arr)
12: {
13: i = 0;
14: }
15:
16: //表示
17: for (const auto i : arr)
18: {
19: cout << i << endl;
20: }
21:
22: return 0;
23: }
今まで説明したC++11を合わせてもこのような感じになると思い...
配列の初期化を
int arr[5] = {0};
とすることも出来ますが、宣言時にしか出来ないのであまり利...
C++11では<array>を使用することによって、より利便性のある...
1: #include <iostream>
2: #include <array>
3:
4: using namespace std;
5:
6: int main()
7: {
8: //宣言
9: array<int, 5> arr;
10:
11: //初期化
12: arr.fill(0);//配列内を引数の値で初期化するメンバ関数
13:
14: //表示
15: for (const auto i : arr)
16: {
17: cout << i << endl;
18: }
19:
20: return 0;
21: }
結果は最初のプログラムと同じになります。
9行目の宣言を見るとわかりますが、使い方は
std::array<型, サイズ>
となっています。後は通常の固定長配列と同じように扱うこと...
・・・それだけだと、あまり利点が感じられないかもしれない...
1: #include <iostream>
2: #include <array>
3: #include <algorithm>
4:
5: using namespace std;
6:
7: int main()
8: {
9: //初期化の仕方は従来の配列と同じように出来る
10: array<int, 5> a = { 1, 2, 3, 4, 5 };
11: array<int, 5> b = { 6, 7, 8, 9, 10 };
12:
13: auto m = [](const int& i){cout << i << endl;};
14:
15: //イテレータを使った表示
16: for_each(a.cbegin(), a.cend(), m);
17: for_each(b.cbegin(), b.cend(), m);
18:
19: a.swap(b);//配列の中身を交換する
20:
21: //交換後の表示
22: for_each(a.cbegin(), a.cend(), m);
23: for_each(b.cbegin(), b.cend(), m);
24:
25: return 0;
27: }
プログラムを見れば分かると思いますが、イテレータがあるこ...
つまり、このarrayを使えば他のコンテナにあるようなメンバ関...
また、先ほどのfill()もそうですが、19行目のswap()のように...
このarrayは、"通常の固定長配列+イテレータ等の複数の機能"...
以上でC++11での固定長配列の説明を終わります。
前→C++11講座8回
次→C++11講座10回
#vote(EMURATED[0],EMURATED[0],EMURATED[0])
終了行:
第9回はC++11での固定長配列になります。
ここからは、C++11で新登場したライブラリについての説明を行...
固定長配列を使用する場合
1: #include <iostream>
2:
3: using namespace std;
4:
5: int main()
6: {
7: //宣言
8: int arr[5];
9:
10: //初期化
11: for (auto& i : arr)
12: {
13: i = 0;
14: }
15:
16: //表示
17: for (const auto i : arr)
18: {
19: cout << i << endl;
20: }
21:
22: return 0;
23: }
今まで説明したC++11を合わせてもこのような感じになると思い...
配列の初期化を
int arr[5] = {0};
とすることも出来ますが、宣言時にしか出来ないのであまり利...
C++11では<array>を使用することによって、より利便性のある...
1: #include <iostream>
2: #include <array>
3:
4: using namespace std;
5:
6: int main()
7: {
8: //宣言
9: array<int, 5> arr;
10:
11: //初期化
12: arr.fill(0);//配列内を引数の値で初期化するメンバ関数
13:
14: //表示
15: for (const auto i : arr)
16: {
17: cout << i << endl;
18: }
19:
20: return 0;
21: }
結果は最初のプログラムと同じになります。
9行目の宣言を見るとわかりますが、使い方は
std::array<型, サイズ>
となっています。後は通常の固定長配列と同じように扱うこと...
・・・それだけだと、あまり利点が感じられないかもしれない...
1: #include <iostream>
2: #include <array>
3: #include <algorithm>
4:
5: using namespace std;
6:
7: int main()
8: {
9: //初期化の仕方は従来の配列と同じように出来る
10: array<int, 5> a = { 1, 2, 3, 4, 5 };
11: array<int, 5> b = { 6, 7, 8, 9, 10 };
12:
13: auto m = [](const int& i){cout << i << endl;};
14:
15: //イテレータを使った表示
16: for_each(a.cbegin(), a.cend(), m);
17: for_each(b.cbegin(), b.cend(), m);
18:
19: a.swap(b);//配列の中身を交換する
20:
21: //交換後の表示
22: for_each(a.cbegin(), a.cend(), m);
23: for_each(b.cbegin(), b.cend(), m);
24:
25: return 0;
27: }
プログラムを見れば分かると思いますが、イテレータがあるこ...
つまり、このarrayを使えば他のコンテナにあるようなメンバ関...
また、先ほどのfill()もそうですが、19行目のswap()のように...
このarrayは、"通常の固定長配列+イテレータ等の複数の機能"...
以上でC++11での固定長配列の説明を終わります。
前→C++11講座8回
次→C++11講座10回
#vote(EMURATED[0],EMURATED[0],EMURATED[0])
ページ名: