m_shige1979のときどきITブログ

プログラムの勉強をしながら学習したことや経験したことをぼそぼそと書いていきます

Github(変なおっさんの顔でるので気をつけてね)

https://github.com/mshige1979

【C++】動的にデータを追加するvector、listを使う

配列などを定義して使用する際は

素数を使用しますが、用意する要素数が不明瞭な場合は件数の指定が曖昧になります。
5件の場合もあれば10件の場合など
その際に使用するのがvector

実装

サンプル
//============================================================================
// Name        : sample04.cpp
// Author      :
// Version     :
// Copyright   : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================

#include <iostream>
#include <vector>
#include <list>
#include <cstring>

using namespace std;

int main() {
	cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!!

	/**
	 * vectorの場合
	 */
	vector<string> strlist;
	strlist.push_back("aaaa1");
	strlist.push_back("aaaa2");
	strlist.push_back("aaaa3");
	strlist.push_back("aaaa4");

	// イテレータを使用して抽出
	for (vector<string>::iterator it = strlist.begin(); it != strlist.end(); ++it) {
		cout << *it << endl;
	}

	vector<int> intlist;
	intlist.push_back(100);
	intlist.push_back(200);
	intlist.push_back(300);
	intlist.push_back(400);

	// 回数指定で抽出
	for (int i=0;i<intlist.size();i++) {
		int a = intlist.operator[](i);
		cout << a << endl;
	}

	/**
	 * listの場合
	 */
	list<string> strlist2;
	strlist2.push_back("bbbb1");
	strlist2.push_back("bbbb2");
	strlist2.push_back("bbbb3");
	strlist2.push_back("bbbb4");

	// イテレータを使用して抽出
	for (list<string>::iterator it = strlist2.begin(); it != strlist2.end(); ++it) {
		cout << *it << endl;
	}

	return 0;
}

!!!Hello World!!!
aaaa1
aaaa2
aaaa3
aaaa4
100
200
300
400
bbbb1
bbbb2
bbbb3
bbbb4
vectorの場合

要素の途中の項目にもアクセスできます。listよりは少し遅いとのこと

listの場合

イテレータなどの処理以外で参照しかできない分処理は速いらしい

所感

まあ、とりあえず現状は動的配列としてはvectorを使用したほうが良い感じに見える。
いろいろ調べて行くうちに別の方法が見つかると思いますが…