C++でのstd::vectorとstd::arrayの違い
ベクトルと配列の違いは次のとおりです-
- Vectorは、インデックスベースではなく要素を格納するためのシーケンシャルコンテナです。
- 配列は、同じタイプの要素の固定サイズの順次コレクションを格納し、インデックスベースです。
- ベクトルは本質的に動的であるため、要素を挿入するとサイズが大きくなります。
- アレイは固定サイズであるため、一度初期化するとサイズを変更できません。
- ベクターはより多くのメモリを占有します。
- 配列はメモリ効率の高いデータ構造です。
- ベクターは要素へのアクセスに時間がかかります。
- 要素は連続したメモリ割り当てに配置されるため、場所に関係なく一定時間で要素にアクセスできます。
ベクトルと配列は、次の構文で宣言できます-
Vector declaration:vector<datatype>array name; Array declaration:type array_name[array_size]; Vector initialization:vector<datatype>array name={values}; Array initialization:datatype arrayname[arraysize] = {values};
std ::vector:
サンプルコード
#include <iostream> #include <vector> using namespace std; int main() { vector<vector<int>>v{ { 4, 5, 3 }, { 2, 7, 6 }, { 3, 2, 1 ,10 } }; cout<<"the 2D vector is:"<<endl; for (int i = 0; i < v.size(); i++) { for (int j = 0; j < v[i].size(); j++) cout << v[i][j] << " "; cout << endl; } return 0; }
出力
the 2D vector is: 4 5 3 2 7 6 3 2 1 10
std ::array:
サンプルコード
#include<iostream> #include<array> using namespace std; int main() { array<int,4>a = {10, 20, 30, 40}; cout << "The size of array is : "; //size of the array using size() cout << a.size() << endl; //maximum no of elements of the array cout << "Maximum number of elements array can hold is : "; cout << a.max_size() << endl; // Printing array elements using at() cout << "The array elements are (using at()) : "; for ( int i=0; i<4; i++) cout << a.at(i) << " "; cout << endl; // Filling array with 1 a.fill(1); // Displaying array after filling cout << "Array after filling operation is : "; for ( int i=0; i<4; i++) cout << a[i] << " "; return 0; }
出力
The size of array is : 4 Maximum number of elements array can hold is : 4 The array elements are (using at()) : 10 20 30 40 Array after filling operation is : 1 1 1 1
-
C++での関係演算子(==)とstd ::string ::compare()の違い
関係演算子==とstd::string ::compare()の違いは1つだけです。それが戻り値です。内部的には、string ::operator ==()はstring ::compare()を使用しています 関係演算子(==)は、2つの文字列が等しいかどうかを示すブール値を返し、compareは、文字列の相互関係を示す整数を返します。 ユースケースを詳しく説明するために、compare()は、2つの文字列がたまたま異なっている場合に、2つの文字列が互いにどのように関連するか(小さいか大きいか)に関心がある場合に役立ちます。たとえば、 例 #include <iostream>
-
C++でのendlと\nの比較
\ n改行を出力します(適切なプラットフォーム固有の表現であるため、Windowsでは \ r \ nを生成します)が、std::endlは同じで、ストリームをフラッシュします。通常、ストリームをすぐにフラッシュする必要はなく、パフォーマンスが低下するだけなので、ほとんどの場合、std::endlを使用する理由はありません。 ストリームを手動でフラッシュする場合-例:出力がタイムリーにユーザーに表示されることを期待しているためです。ストリームに「\n」を書き込む代わりに、std ::endlを使用する必要があります(分離された文字または文字列の一部として)。