0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

vectorに範囲チェックがない理由

Posted at

結論:範囲チェックを入れると、毎回オーバーヘッドが発生し、遅くなるから。

提案:もし範囲チェックをしたい場合、.at(i)でアクセスをすれば、範囲外アクセスで例外を投げる。速度を優先したい場合は[i]を使う。

設計上の理由:ストラウストラップ先生は「ある分野での完全性は、その分野への特化を意味する(プログラミング言語 C++ 第4版 p19)」と述べている。C++は幅広いシステム開発での優れたツールとなることを目指しているため、言語としては手段を提供し、選択権をユーザー側に持たせている。

Rustの場合:C++と比較的近いRustの場合はどうしているかというと、デフォルトで範囲チェックを行っているようだ。ただし、優秀なLLVMがビルド時に最適化してチェックを省略してくれたり、unsafeを使って自己責任でチェックを省くことができる。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?