for文

for.png

for文じゃなくてalgorithmforeachを使うのがいいらしい。
VisualStudio2012だと、pythonみたいなfor文を書くことが可能☆C++11だといいのかな?

int main() 
{
    // Basic 10-element integer array.
    int x[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
 
    // Range-based for loop to iterate through the array.
    for( int y : x ) { // Access by value using a copy declared as a specific type. 
                       // Not preferred.
        cout << y << " ";
    }
    cout << endl;

高速化手法

要約すると

  • []な配列の場合はforeachの方が速い。[2]
  • コンテナの方は普通のfor文+.size()外出しが速い

EffectiveJava[Bibliography item effecticejava not found.]では必ずforeachを使用せよなどと書いてあるけど、
高速化優先の場合、それは間違いです。
安全性優先の場合はソッチのほうがいいのかもしれないけど

String str="abcd"; 
for(int i=0; i < str.length(); i++){ System.out.println(str); }

上記は終了条件を毎回アクセスの遅いヒープ領域を使用していますが、 これをローカル変数にコピーすることで処理の高速化が図れます!
String str="abcd"; 
int i_length=str.length();
for(int i=0; i < i_length; i++){ System.out.println(str); }

for文の中身を少なくしてくれるC++11の便利関数

  • for_each
  • mem_fun
  • find_if
  • max_element
  • all_of
  • any_of
  • count_if
  • accumulate
  • max
  • min
  • copy_if

サポートサイト Wikidot.com