2017-11-03 9 views
1

P3は、その執行のセクションの下に次のパターンを提供しています:意味は、コアのcppガイドラインの

F( T *、int)インタフェースとf(スパン)インタフェースの比較

現代のC++を理解しようとしている皮質な古いCプログラマにとって、

+2

「スパン」の詳細[ここ](https://stackoverflow.com/questions/45723819/what-is-a-span-and-when-should-i-use-one) – Default

答えて

6

セクションP3は、「Express intent」です。それゆえ、アイデアは意図をより明確に表現するものです。

f(T*, int)を考えてください。

  1. ポインタが単一のオブジェクトまたは配列を指していますか?
  2. 整数は配列のサイズなどを表しますか?

この情報は、機能シグネチャでうまく表現されていません。他の手段、例えば(span<T>オブジェクトで参照されている)配列をとります。この例では、次のように記述しています:オブジェクトから参照される配列です。ポインタが多目的であるのとは異なり、これがspanの唯一の目的であるため、意図は明確です。

したがって、f(span<T>)は、意図が配列をとることを意図している場合、より良い意図を述べています。

+3

質問に加えてあなたは "私のポインタがヌルになるのですか?"と "所有権セマンティクスは何ですか?"と付け加えました。 (後者への答え*は、** **データが所有している必要がありますが、十分なレガシーAPIがありますが依然として質問する必要があります)。 –