Deprecated: Array and string offset access syntax with curly braces is deprecated in /mnt/hep_web/hep_web/member/n-kota/dokuwiki/inc/init.php on line 542
ja:cpp:array [GiriWiki]

ユーザ用ツール

サイト用ツール


ja:cpp:array

差分

この文書の現在のバージョンと選択したバージョンの差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
ja:cpp:array [2017/05/14 06:12]
kota [動的メモリ確保・解放]
ja:cpp:array [2017/05/14 08:35] (現在)
kota [std::fill()を使った初期化]
ライン 16: ライン 16:
 </​code>​ </​code>​
  
 +----
  
  
 === 2次元配列 === === 2次元配列 ===
-一度に確保できるのは1次元までなので、1次元ずつ確保していく。 +== 方法1 == 
-解放も同様に1次元ずつ。+  * 一度に確保できるのは1次元までなので、1次元ずつ確保していく。 
 +  ​* ​解放も同様に1次元ずつ。 
 +  * 配列ポインタへの配列、という扱いで、最初の足ごとに配列の要素数を変えることも可能
 <code cpp> <code cpp>
  //////////​ 確保 //////////  //////////​ 確保 //////////
ライン 38: ライン 41:
 </​code>​ </​code>​
  
 +== 方法2 ==
 +後ろの足のサイズが先に決まっている場合、最初の足だけ動的に確保してやるやり方もできる。
 +<code cpp>
 + //////////​ 確保 //////////
 + ​double (*array2)[20];​
 + int n1 = 10;
 + ​array2 = new double[n1][20];​
 +
 + //////////​ 解放 //////////
 + ​delete[] array2;
 +</​code>​
 +
 +== 方法3 ==
 +std::​vectorでやっちゃう
 +<code cpp>
 + int n1 = 10;
 + int n2 = 20;
 + ​std::​vector<​ std::​vector<​double>​ > array2( n1, std::​vector<​double>​(n2) );
 +</​code>​
 +----
  
 === 3次元配列 === === 3次元配列 ===
ライン 64: ライン 87:
 </​code>​ </​code>​
  
 +----
 +
 +===== std::​fill()を使った初期化 =====
 +  * fillの引数は、(first Iterator、last iterator, value)
 +  * std::vector とかだとstd::​fill(vector.begin(),​ vector.end(),​ value);​とかstd::​fill_n(vector.begin(),​ vector.size(),​ value);
 +
 +
 +  * 以下のコードではいずれも1で初期化。
 +<code cpp>
 + #​include <​algorithm>​
 +
 +
 + ​double array1[10];
 + ​std::​fill(array,​ &​array[10],​ 1);
 + ​std::​fill(array,​ array+10, 1);//​これでもOK
 + ​std::​fill_n(array,​ 10, 1);//​これでもOK
 + 
 +
 + ​double array2[10][20];​
 + ​std::​fill(array2[0],​array2[10],​1);​
 +
 + ​double array3[10][20][30];​
 + ​std::​fill(array3[0],​array3[10],​1);​
 +
 +</​code>​
ja/cpp/array.1494742332.txt.gz · 最終更新: 2017/05/14 06:12 by kota