Outline

Revision as of 2020-02-09 23:36

 
<Header> <Parent> List <Title> Listの使い方 <CreatedAt> 2016-2-8 <Tags> <Summary> ここでは, Listの基本的な使い方を説明します. 各説明項目は以下のとおりです. * 使用例 * C#との相違点 * Sortについて </Summary> </Header> # 使用例 ここでは, 作成したlistに0~1023まで数値を代入して結果を表示してみたいと思います. ```cpp #include "List.h" #include <stdio.h> int main() { //インスタンス生成 //容量は500に設定 List<int> list(500); for(int i = 0; i < 1024; i++) { //追加 //容量を超えると自動で確保される list.Add(i); } //結果表示 //0~1023が表示される for(int i = 0; i < list.Count(); i++) { printf("%d\n", list[i]); } return 0; } ``` # C#との相違点 このListはC#のListと一部異なるところがあります. C#とC++は言語が違うからです. 以下にその違いを書いていきます. # インスタンス生成 まず, 実際にスクリプトを見てみます. C#の場合: ```csharp List<int> list = new List<int>(); ``` C++の場合: ```cpp //ヒープ領域に確保する場合 List<int> *listA = new List<int>(); //スタック領域に確保する場合 List<int> listB(); ``` C#では参照型オブジェクトの実体を作るには必ずnewしなければいけませんが, C++はそうするとは限りません. # 参照と値 まず, 実際にスクリプトを見てみます. 代入を考えます. C#の場合: ```csharp //参照がコピーされます listA = listB; ``` C++の場合: ```cpp //値がコピーされます listA = listB ``` 上のコードは文字として一緒ですが, 動作が異なります. C#は参照がコピーされますが, C++は値がコピーされます. これは, C++とC#の仕様が異なるためです. C#において, クラスの変数には参照値―メモリアドレス値(Cでいうとポインタ)―が格納されます. この場合C++の方が処理に時間がかかることになります. # [[Sort]]Sortについて Sort関数を使う際, 順序比較のための関数'Comparison'を用意する必要があります. このComparisonは次の形式を満たす必要があります. ```cpp //Comparisonについて: // 返り値: // 0より小さい: // 並び替え順序においてAはBの前 // // 0: // 並び替え順序においてAとBは同じ位置 // // 0より大きい: // 並び替え順序においてAはBの後ろ int(*comparison)(TYPE, TYPE); ``` 実際にint型のための比較関数は以下のようになるでしょう. ```cpp int compare(int a, int b) { return a - b; } ``` これらを踏まえ簡単なサンプルを示します. ```cpp #include "List.h" #include <iostream> using namespace std; int compare(int a, int b) { return a - b; } int main() { List<int>list; list.Add(3); list.Add(6); list.Add(7); list.Add(9); list.Add(-1); list.Add(-1); list.Add(-4); list.Add(2424); list.Add(7676); list.Add(23); for (int i = 0; i < list.Count(); i++) { std::cout << list[i] << "\n"; } std::cout << "***並び替え後\n"; list.Sort(compare); for (int i = 0; i < list.Count(); i++) { std::cout << list[i] << "\n"; } return 0; } /* 実行結果 3 6 7 9 -1 -1 -4 2424 7676 23 ***並び替え後 -4 -1 -1 3 6 7 9 23 2424 7676 */ ```
Retrieved from "https://www.contentsviewer.work/Master/Library/Cpp/ListUsage?cmd=history&rev=1581258978"