アットウィキロゴ

C++

split関数


C++にないというsplit関数。簡易版。

strをseparaterで分割し、listとして出力
list<string> split(string str, string separater)
{
list<string> result;			//1つ1つの文字列を持つlist
int i = 0;				//切り出す文字列の先頭の番号
int j = str.find_first_of(separater);	//切り出す文字列の末尾の番号

while(j != -1){
	result.push_back(str.substr(i,j-i));	//文字列を切り出しlistに追加
	i = j+1;				//先頭の番号を更新
	j = str.find_first_of(separater,i);	//末尾の番号を更新
	//最後尾の文字列の取り込み
	if(j == -1)
		result.push_back(str.substr(i));
}

return result;
}


vector

動的確保が可能な配列定義の形のひとつ。コンテナだが、配列と同じ形で参照が可能。
動的確保とはいえ、最初に大きくメモリを確保している。要素数がわかっているならば、リサイズすることで最適化が可能。

resize


文法:
 void resize( size_type size, TYPE val );

resize() 関数はベクタのサイズを size に変更し、 新規に追加された項目を val に設定する。

要素数がわかっているならやるべき。

演算子


文法:
 v1 == v2
 v1 != v2
 v1 <= v2
 v1 >= v2
 v1 < v2
 v1 > v2 
 v[]

C++ ベクタは標準演算子 ==, !=, <=, >=, <, と > によって比較できる。 ベクタの個々の要素は [] 演算子によって調べられる。

二つのベクタは等しくなる条件は次の通り。

サイズが同じ、かつ
各要素に対して、一方のベクタの位置 I にある要素が、他方のベクタの位置 I にある要素に等しい。
ベクタ間の比較は辞書順で行われる。

動的確保時の注意

自分の使っていたときの症状を書く。すべての人に当てはまらないこともあるので参考までに。

工事中・・・。

string関連のメソッド


split関数でも使ってるやつ。これからお世話になりそう。

find_first_of


文法:
 size_type find_first_of( const basic_string &文字列, size_type インデックス = 0 );
 size_type find_first_of( const char *文字列, size_type インデックス = 0 );
 size_type find_first_of( const char *文字列, size_type インデックス, size_type 文字数 );
 size_type find_first_of( char 文字, size_type インデックス = 0 );
find_first_of()関数は以下の動作を行う。

  • 現在の文字列のインデックス 番目の文字から検索を開始し、文字列 の中に含まれる文字が最初に見つかった位置を返す。見つからない場合にはstring::nposを返す
  • 現在の文字列のインデックス 番目の文字から文字数 分の範囲を検索を開始し、文字列 の中に含まれる文字が最初に見つかった位置を返す。見つからない場合にはstring::nposを返す
  • 現在の文字列のインデックス 番目の文字から検索を開始し、文字 が最初に見つかった位置を返す。見つからない場合にはstring::nposを返す

size


文法:
 size_type size();
size() 関数は現在の文字列の文字数を返す

substr


文法:
 basic_string substr( size_type インデックス, size_type 文字数 = npos );
substr()関数は現在の文字列のインデックス から始まり長さ の部分文字列部分文字列を返す。 文字数が省略された場合にはデフォルトとしてstring::nposが使用され、substr()関数の戻り値はインデックスから最後まで全部になる。
以下サンプル:
  string s("What we have here is a failure to communicate");

  string sub = s.substr(21);

  cout << "The original string is " << s << endl;
  cout << "The substring is " << sub << endl;
表示:

   The original string is What we have here is a failure to communicate
   The substring is a failure to communicate


行列


こんなページがあった。matrix.hだと・・・。

ま、octaveに入ってるけどねー。参考程度に。




参考URL



#bf
名前:
コメント:

Today's Access -
Yesterday's Access -
最終更新:2009年06月07日 20:32
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。