2008年5月12日月曜日

valarrayのconstructorとresize

valarrayの各要素に同じ値を入れる方法として constructor を使う方法と resize を使う方法があるが, そのインターフェースの違いに戸惑ったのでメモ.

  • valarray(const T& v, size_t num)
  • valarray.resize(size_t num, const T v = T())
このように, 引数の順番が逆になっているのに気づいていなかった. T と size_t が異なればコンパイル時にエラーが出るが, そうでない場合はそのままバグになるので気をつけないと.

例:

01: #include<valarray>
02: #include<iostream>
03:
04: using namespace std;
05:
06: int main(void){
07: valarray<char> v('a', 5);
08: for(int i = 0; i < v.size(); ++i) cout << v[i]; cout << endl;
09:
10: v.resize(5,'b');
11: for(int i = 0; i < v.size(); ++i) cout << v[i]; cout << endl;
12:
13: return 0;
14: }

0 件のコメント: