C +ベクトル
ベクトルは標準的な配列に似ていますが、動的でありえます.これは固定サイズがなく、必要に応じてリサイズされることを意味します.それは標準のテンプレートライブラリ(STL)の一部であり、あなたのファイルに含める必要があります
通常の配列と同様に、データ型と名前を指定します.必要に応じてベクトルを初期化するためにサイズを指定することができます.また、ベクトルの各インデックスを初期化する方法を指定できます.また、別のベクトルの内容でベクトルを初期化することもできます.
操作
インデックスに格納されている要素を取得し、そのインデックスの値を変更できます. 覚えておいてください.
メンバー関数
使用できるクラスベクトルには多くの関数があります.
不利
ベクトルが動的であるので、彼らはより多くの要素を加えることができるように、彼らが彼らが含む要素のために必要であるより多くのスペースをとるかもしれません.彼らがより多くの要素にフィットするためにリサイズされる必要があるとき、メモリは再配置されなければなりません.したがって、ベクトルがより多くのメモリを消費し、いくつかのパフォーマンスオーバーヘッドが配列に比べてあります.
更なる読書/引用 C++プログラミング:データ構造を含むプログラム設計 Cplusplus.com - std::vector
#include <vector>
.通常の配列と同様に、データ型と名前を指定します.必要に応じてベクトルを初期化するためにサイズを指定することができます.また、ベクトルの各インデックスを初期化する方法を指定できます.また、別のベクトルの内容でベクトルを初期化することもできます.
std::vector<int> numsA;
std::vector<int> numsB(5);
std::vector<int> numsC(5, 9);
std::vector<int> numsD(numsC);
numsA
はサイズ0のベクトルです.numsB
はサイズ5のベクトルであり、各インデックスは値0で初期化される.numsC
はサイズ5のベクトルであり、各インデックスは値9で初期化される.最後にnumsD
の内容のコピーに初期化されるnumsC
, それは、それが9 sで満たされるサイズ5のベクトルになります.操作
インデックスに格納されている要素を取得し、そのインデックスの値を変更できます.
v.at(index)
指定したインデックスの要素を返すv[index]
指定したインデックスの要素を返すv.front()
最初の要素を返すv.back()
最後の要素を返すfront()
and back()
ベクトルが空であるかどうかを確認するのをチェックしないでください.それがそうであるならば、あなたのコードはコンパイルされます、しかし、それは止まります、そして、あなたはAを得ますEXC_BAD_ACCESS
エラーです.また、あなたはout_of_range
使用しようとするとエラーat()
作成したものの範囲外のインデックスを指定します.// create a char array of size 4
std::vector<char> alpha(4);
// fill values at specific indices
alpha.front() = 'A';
alpha[1] = 'B';
alpha.at(2) = 'C';
alpha.back() = 'D';
// display values at specific indices
std::cout << alpha.front() << "\n";
std::cout << alpha[1] << "\n";
std::cout << alpha.at(2) << "\n";
std::cout << alpha.back() << "\n";
// output
A
B
C
D
メンバー関数
使用できるクラスベクトルには多くの関数があります.
v.capacity()
より多くのスペースを再配置する必要なしで、ベクトルに格納されることができる要素の最大数を返しますv.empty()
ベクトルが空の場合、true ( 1 )を返します;false ( 0 )v.size()
ベクトルのサイズを返すv.max_size()
ベクトルに挿入できる要素の最大数を返すstd::vector<char> alpha(4);
std::cout << alpha.empty() << "\n";
std::cout << alpha.capacity() << "\n";
std::cout << alpha.size() << "\n";
std::cout << alpha.max_size() << "\n";
// output
0
4
4
9223372036854775807
v.clear()
ベクトルからすべての要素を削除する// initialize 4 elements to 'A'
std::vector<char> alpha(4, 'A');
std::cout << alpha.empty() << "\n";
alpha.clear();
std::cout << alpha.empty() << "\n";
// output
0
1
v.push_back()
ベクトルの最後に要素をプッシュするv.pop_back()
ベクトルの最後に要素を削除する// create empty vector
std::vector<char> alpha;
// push elements into vector
alpha.push_back('A');
alpha.push_back('B');
alpha.push_back('C');
alpha.pop_back(); // remove last element 'C'
// loop through elements of vector and display values
for (int i = 0; i < alpha.size(); i++)
std::cout << i << ": " << alpha[i] << std::endl;
// output
0: A
1: B
より多くのメンバー関数を見つけることができますhere .不利
ベクトルが動的であるので、彼らはより多くの要素を加えることができるように、彼らが彼らが含む要素のために必要であるより多くのスペースをとるかもしれません.彼らがより多くの要素にフィットするためにリサイズされる必要があるとき、メモリは再配置されなければなりません.したがって、ベクトルがより多くのメモリを消費し、いくつかのパフォーマンスオーバーヘッドが配列に比べてあります.
更なる読書/引用
Reference
この問題について(C +ベクトル), 我々は、より多くの情報をここで見つけました https://dev.to/robotspacefish/c-vectors-4gmpテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol