こんにちは、AKデザインの中の人です。
仕事をしていると「名前は聞いたことあるけど実はよく分かっていない」という技術や仕組みに出会うことがあります。
今回のテーマは「C++のvectorとstringを使う基本」です。
C++では、データ構造や文字列を扱うための強力なツールとしてvectorとstringがあります。本記事では、それぞれの基本的な使い方と実務での活用法について触れます。
実際の現場でも登場することが多い内容ですので、初心者の方にも分かりやすいように整理してみました。
それでは見ていきましょう。
\n\n
導入・全体像
C++において、vectorとstringはよく使用されるデータ構造です。vectorは、サイズが可変の配列で、要素の追加や削除が容易に行えます。stringは、文字列のデータ型として、文字の操作を簡便にしてくれます。この記事では、これら2つの基本的な使い方を学びつつ、実務での活用や注意点にも触れていきます。
このセクションでは、vectorとstringの特性についてもう少し詳しく掘り下げてみましょう。
vectorは、その可変サイズを活かして、プログラムの実行中にデータの増減が頻繁にある場合に非常に便利です。例えば、動的に生成されるデータを格納する際や、ユーザーからの入力を管理する場合にも役立ちます。
一方、stringは、C++の標準ライブラリで提供される豊富なメソッドが魅力です。検索や置換、部分文字列の抽出などが非常にスムーズに行えます。ただし、特に大量の文字列操作を行う場合には、パフォーマンスに注意が必要です。
- vectorやstringは、メモリの動的管理を行うため、過剰な使用はメモリリークの原因になることがあります。
基本の考え方
関連動画をピックアップ!
まずはvectorとstringの基本的な定義と特徴を確認しましょう。
vectorの特徴
vectorは、サイズが可変の配列です。動的にサイズを変更できるため、固定サイズの配列ではできない柔軟なデータ管理が可能です。また、要素の追加や削除が非常に効率的に行えます。
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec;
vec.push_back(1);
vec.push_back(2);
vec.push_back(3);
for (int i : vec) {
std::cout << i << " ";
}
return 0;
}
このコードでは、vectorに整数を追加し、全ての要素を出力します。ここで重要なのは、要素数が動的に変わっても安心して扱えるという点です。
stringの特徴
stringは文字列操作を簡単に扱うためのクラスです。C++の標準ライブラリに含まれ、多くの便利なメソッドが提供されています。文字列の結合、分割、検索など、さまざまな処理が簡単にできます。
#include <iostream>
#include <string>
int main() {
std::string str = "Hello, ";
str += "World!";
std::cout << str << std::endl;
return 0;
}
このコードでは、stringを使って文字列を結合しています。基本的な扱いは直感的なので、初めての方でも応用しやすいでしょう。
実務での見方や例
実務では、vectorやstringを用いたデータ管理のニーズが高まります。ここでは、具体的なシナリオを紹介します。
データの集計
例えば、ユーザーからの入力データを処理する場合、vectorを使って動的にデータを蓄積し、その後処理を行うという流れが一般的です。
#include <iostream>
#include <vector>
int main() {
std::vector<int> scores;
int score;
while (std::cin >> score) {
scores.push_back(score);
}
int sum = 0;
for (int s : scores) {
sum += s;
}
std::cout << "Total Score: " << sum << std::endl;
return 0;
}
ここでは、コンソールから得たユーザーのスコアをvectorに追加し、合計を計算しています。このように、動的なデータ収集が可能です。
文字列処理の効率化
また、文字列データの処理でもstringの利用は非常に重要です。例えば、ログデータやユーザーの入力データを解析する際に、簡単な文字列操作が役立ちます。
#include <iostream>
#include <string>
int main() {
std::string log = "Error: Disk is full";
if (log.find("Error") != std::string::npos) {
std::cout << "An error occurred." << std::endl;
}
return 0;
}
この例では、エラーメッセージを含む文字列から特定のキーワードを検索し、条件に応じた処理を行っています。実務においては、こうした操作が頻繁に発生します。
使いどころや注意点
vectorとstringを適切に使うためには、いくつかのポイントに気を付けましょう。
パフォーマンスへの配慮
vectorはサイズが増えるとリサイズしながら要素を格納します。そのため、大量のデータを扱う場合、初期容量を設定しておくとパフォーマンスが向上します。
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec;
vec.reserve(100); // 初期容量を設定
// データの追加処理...
return 0;
}
このように、reserveメソッドを利用して初期容量を設定することで、無駄なメモリ再割り当てを回避できます。
エラーハンドリング
stringを扱う際、入力のバリデーションや例外処理に注意が必要です。特に、外部入力からのデータを扱う場合は、意図しない文字列が混入することもあります。
ログなどでは、エラーメッセージを含む特定のパターンを検索する処理を行うことが多いですが、その際は必ず結果が得られなかった場合の処理も考慮しておく必要があります。
関連動画をピックアップ!

まとめ
vectorとstringの基本的な使い方を学びました。これらはC++を道具として用いる上で、非常に強力なツールです。実務においても、データ管理や文字列処理の際に欠かせない存在であるため、是非マスターして活用してみてください。
