私は、高性能と低メモリオーバーヘッドを念頭に置いて、C ++で記述された多くの計算コードを使用しています。STLコンテナー(ほとんどvector
)を頻繁に使用し、ほぼすべての関数でそのコンテナーを反復処理します。
反復コードは次のようになります。
for (int i = 0; i < things.size(); ++i)
{
// ...
}
ただし、符号付き/符号なしの不一致の警告が生成されます(Visual StudioのC4018)。
OpenMPプラグマを頻繁に使用するため、int
あるunsigned
タイプに置き換えることは問題であり、カウンターはint
。である必要があります。
私は(数百の)警告を抑制しようとしていますが、問題に対するいくつかのエレガントな解決策を見逃しているのではないかと心配しています。
イテレータについて。イテレータは適切な場所に適用すると素晴らしいと思います。私が使用しているコードは、ランダムアクセスコンテナを何かに変更することはなくlist
(したがって、反復処理int i
はすでにコンテナに依存しません)、常に現在のインデックスが必要になります。また、入力する必要のあるすべての追加コード(イテレーター自体とインデックス)は、問題を複雑にし、基になるコードの単純さを難読化します。
int
です。