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