1. ホーム
  2. c++

[解決済み] c++ uint , unsigned int , int

2022-02-08 14:51:15

質問

ベクトルやその要素のインデックスを多く扱うプログラムを持っているのですが、不思議に思っています。

  1. との違いは何ですか? uintunsigned int
  2. のどちらを使用するのが良いのか、それとも単に int コンパイラはint型の値をより効率的に処理すると言われています。 int 負のIDXがないか常にチェックしなければならないので、面倒です。
  3. イテレータは、通常のインデックス作成より効率的だと思いますか? vectorx[idx] ?

p.s. 大規模なデータ処理を行うソフトウェアであり、優れたパフォーマンスが必須条件となります。

解決方法は?

  1. C++では、このような型は定義されていません。 uint . これは、あなたのコードやサードパーティのライブラリで定義された型である必要があります。と同じだと推測できます。 unsigned int . 以下のようになる可能性があります。 unsigned long int とかなんとか言ってますが。とにかく、自分で確認することです。

  2. それは、個人のスタイルの問題です。たとえば私は、サイズや数量など、自然に負でない値を表すには符号なし型を使わなければならないと考えています。特定の文脈を除けば、符号付き型と符号なし型の間にパフォーマンスの差はないのです。ほとんどの場合、それは 符号なし の方がより効率的に処理されます。

  3. イテレータは実装をより汎用的にします。つまり、シーケンシャルアクセスのイテレータを使うことで、どんなシーケンシャルデータ構造にも実装を適用できるようになります。インデックスを使うと、データ構造に対してランダムアクセスという強い要求が課せられます。これは強い要求です。本当に必要でないときに強い要求を課すのは良いアイデアではありません。