C++でベクトル(vector)を実装するプログラムの書き方
ベクトル(vector)とは
C++のベクトル(vector)は、要素の挿入や削除に応じて自動的にサイズを変更できる動的配列です。ベクトルの要素は連続したメモリ領域(ストレージ)に格納され、その記憶域の管理はコンテナ側が自動的に行います。そのため、プログラマーは配列のサイズ管理を意識することなく、通常の配列のように手軽にデータを扱えます。
以下に、ベクトルを実装したプログラムの例を示します。
サンプルコード
#include <iostream>
#include <vector>
#include <string>
#include <cstdlib>
using namespace std;
int main() {
int ch, val;
vector<int> vec;
cout<<"1)Insert Element into the Vector"<<endl;
cout<<"2)Delete Last Element of the Vector"<<endl;
cout<<"3)Print size of the Vector"<<endl;
cout<<"4)Display Vector elements"<<endl;
cout<<"5)Clear the Vector"<<endl;
cout<<"6)Exit"<<endl;
do {
cout<<"Enter your Choice: "<<endl;
cin>>ch;
switch(ch) {
case 1:
cout<<"Enter value to be inserted: "<<endl;
cin>>val;
vec.push_back(val);
break;
case 2:
cout<<"Last Element is deleted."<<endl;
vec.pop_back();
break;
case 3:
cout<<"Size of Vector: ";
cout<<vec.size()<<endl;
break;
case 4:
cout<<"Displaying Vector Elements: ";
for (int i = 0; i < vec.size(); i++)
cout<<vec[i]<<" ";
cout<<endl;
break;
case 5:
vec.clear();
cout<<"Vector Cleared"<<endl;
break;
case 6:
cout<<"Exit"<<endl;
break;
default:
cout<<"Error....Wrong Choice Entered"<<endl;
}
} while (ch!=6);
return 0;
}実行結果
上記プログラムの実行結果は以下のとおりです。
1)Insert Element into the Vector 2)Delete Last Element of the Vector 3)Print size of the Vector 4)Display Vector elements 5)Clear the Vector 6)Exit Enter your Choice: 1 Enter value to be inserted: 5 Enter your Choice: 1 Enter value to be inserted: 2 Enter your Choice: 1 Enter value to be inserted: 8 Enter your Choice: 1 Enter value to be inserted: 6 Enter your Choice: 3 Size of Vector: 4 Enter your Choice: 4 Displaying Vector Elements: 5 2 8 6 Enter your Choice: 2 Last Element is deleted. Enter your Choice: 3 Size of Vector: 3 Enter your Choice: 4 Displaying Vector Elements: 5 2 8 Enter your Choice: 5 Vector Cleared Enter your Choice: 3 Size of Vector: 0 Enter your Choice: 4 Displaying Vector Elements: Enter your Choice: 9 Error....Wrong Choice Entered Enter your Choice: 6 Exit
プログラムの解説
このプログラムでは、まずint型のベクトルvecを定義し、続いてユーザーが実行したい操作を選択できるメニューを表示しています。該当するコードは以下の部分です。
vector<int> vec; cout<<"1)Insert Element into the Vector"<<endl; cout<<"2)Delete Last Element of the Vector"<<endl; cout<<"3)Print size of the Vector"<<endl; cout<<"4)Display Vector elements"<<endl; cout<<"5)Clear the Vector"<<endl; cout<<"6)Exit"<<endl;
ユーザーからの選択の受け付けにはdo whileループを使用し、入力された値に応じてswitch文で対応する処理を実行します。用意されている操作は、「要素の挿入」「末尾の要素の削除」「サイズの表示」「全要素の表示」「全要素のクリア」「終了」の6つです。選択番号として6が入力されると、ループの継続条件(ch != 6)が満たされなくなり、プログラムが終了します。また、1〜6以外の番号が入力された場合は、default節の処理としてエラーメッセージが表示されます。
do {
cout<<"Enter your Choice: "<<endl;
cin>>ch;
switch(ch) {
case 1:
cout<<"Enter value to be inserted: "<<endl;
cin>>val;
vec.push_back(val);
break;
case 2:
cout<<"Last Element is deleted."<<endl;
vec.pop_back();
break;
case 3:
cout<<"Size of Vector: ";
cout<<vec.size()<<endl;
break;
case 4:
cout<<"Displaying Vector Elements: ";
for (int i = 0; i < vec.size(); i++)
cout<<vec[i]<<" ";
cout<<endl;
break;
case 5:
vec.clear();
cout<<"Vector Cleared"<<endl;
break;
case 6:
cout<<"Exit"<<endl;
break;
default:
cout<<"Error....Wrong Choice Entered"<<endl;
}
} while (ch!=6);使用している主なメンバ関数
- push_back(val):ベクトルの末尾に要素valを追加します。
- pop_back():ベクトルの末尾にある要素を削除します。
- size():現在格納されている要素数を返します。
- clear():すべての要素を削除し、ベクトルを空の状態にします。
このようにベクトルを利用すると、固定長の配列とは異なり、実行時に柔軟に要素の追加・削除が行えるため、要素数が事前にわからない場合のデータ管理に非常に便利です。
-
シーザー暗号を実装するC++プログラム
シーザー暗号とは シーザー暗号は、平文の各文字を別の文字に置き換えることで暗号文を作り出す「単一換字式暗号(モノアルファベット暗号)」の一種です。換字式暗号の中でも最も基本的でシンプルな方式とされています。 この暗号方式は、一般的に「シフト暗号」とも呼ばれます。その考え方は、各アルファベットを0〜25の範囲内の固定した数だけ「ずらした」別のアルファベットに置き換えるというものです。 この方式では、送信者と受信者があらかじめ「秘密のシフト数」を共有しておきます。この0〜25の間の数値が、暗号化の鍵(キー)として機能します。 特に「3文字ずらす」場合には、このシフト暗号を指して「シーザー暗号」と
-
C++でAVL木(AVLツリー)を実装する方法:回転操作とサンプルコードを徹底解説
AVL木とは AVL木(AVL Tree)は、自己平衡型二分探索木(Self-balancing Binary Search Tree)の一種です。すべてのノードにおいて、左部分木と右部分木の高さの差が「1以下」に保たれるという性質を持っています。この平衡条件により、木が片側に偏って成長することを防ぎ、検索・挿入・削除といった操作を常に効率的(O(log n))に行うことができます。 木の回転(Tree Rotation)とは 木の回転とは、要素の順序(ソート順)を崩すことなく木の構造を変更する操作のことです。あるノードを一段上へ移動させ、別のノードを一段下へ移動させることで実現されます。 回