動的配列処理
C++では,動的配列を使用する方法として,「new演算子」を使用した方法,「vector」ライブラリを使用した方法,C言語と同様に「malloc」を使用した方法がある.
vectorライブラリ
C++では,標準で動的配列の「vector型」が用意されている.vector型を使用するには,「vector」をincludeする必要がある.
#include <vector>
int main()
{
// vector<変数型> 変数名;
std::vector<int> vec1; // int型の動的配列を宣言
std::vector<int> vec2(5); // int型の動的配列を5つの要素を用意して宣言
std::vector<int> vec3(5,3); // int型の動的配列を5つの要素を用意して、すべて3で初期化
std::vector<std::vector<int>> vec4; // int型の2次元動的配列を宣言
std::vector<std::vector<int>> vec5(5,std::vector<int>(5)); // int型の2次元動的配列を5x5の要素を用意して宣言
std::vector<std::vector<int>> vec6(5,std::vector<int>(5,3)); // int型の2次元動的配列を5x5の要素を用意して、すべて3で初期化
}
要素へのアクセス
vector型の要素には,通常の配列と同じようにアクセスできる.また,「atメソッド」を使用した方法もある.
#include <vector>
int main()
{
std::vector<int> vec1(5,10);
// 通常の配列と同じ方法
// メリット :高速処理ができる
// デメリット :用意されていない要素にアクセスしたときにエラーがでない
// vec1[i] :i要素にアクセスする
vec1[2]=15;
// atメソッドを使用した方法
// メリット :用意されていない要素にアクセスしたときにエラーがでる
// デメリット :処理が[]に比べて遅い
// at(i) :i要素にアクセスする
vec1.at(0)=2;
}
要素数の変更
vector型では,「resizeメソッド」を使用することで要素数を変更することができる.
#include <vector>
int main()
{
std::vector<int> vec1;
// resize(n) 要素数をnに変更
vec1.resize(100);
}
要素の追加
vector型では,「push_backメソッド」を使用することで要素を追加することができる.
#include <vector>
int main()
{
std::vector<int> vec1(5,5);
// push_back(i) iを配列の最後に連結
vec1.push_back(1);
}
要素数の取得
vector型では,「sizeメソッド」を使用することで要素数を取得することができる.
#include <vector>
int main()
{
// vector型を作成
std::vector vec(5,0);
// size()で要素数が呼び出される
int s=vec.size();
}